Как предотвратить перенаправление на «О себе» после обновления ядра?

В wp-admin/includes/update-core.php находим следующую строку:

add_action( '_core_updated_successfully', '_redirect_to_about_wordpress' );

Я хочу удалить это действие, поэтому я создал mu-плагин со следующим содержимым:

<?php # -*- coding: utf-8 -*-
add_action( '_core_updated_successfully', 't5_no_redirect_after_update', 0 );

function t5_no_redirect_after_update()
{
    remove_action( '_core_updated_successfully', '_redirect_to_about_wordpress' );
}

Это ничего ... ничего. Я все еще перенаправлен. Протестировано с установками на одном сайте и несколькими сайтами.

Думаю, я скучаю по чему-то очевидному, как обычно. :)
Как это сделать лучше?

Update

Основываясь на ответе Брэди, я строю очень минимальную версию:

<?php # -*- coding: utf-8 -*-
/* Plugin Name: T5 No redirect after core upgrade. */
add_action( '_core_updated_successfully', 't5_no_redirect_after_update', 0 );

function t5_no_redirect_after_update()
{
    show_message( __('WordPress updated successfully') );

    // Include admin-footer.php and exit
    include(ABSPATH . 'wp-admin/admin-footer.php');

    exit;
}

Теперь мы видим сообщение об успешном завершении, и никакое другое действие не вызывается. Вы можете загрузить плагин на GitHub . Используйте его как обычный плагин или как плагин MU.

8 голосов | спросил fuxia 6 J000000Friday12 2012, 15:32:28

1 ответ


5

Не удаляйте действие, но добавьте его перед ним. Если вы удалите действие, вы никогда не получите сообщение о том, что оно было успешно обновлено. Здесь вы можете предоставить свою информацию о том, что делать дальше.

function tp_dont_redirect_to_about_wordpress( $new_version ) {
    global $wp_version, $pagenow, $action;

    if ( version_compare( $wp_version, '3.4-RC1', '>=' ) )
        return;

    // Ensure we only run this on the update-core.php page. wp_update_core() could be called in other contexts.
    if ( 'update-core.php' != $pagenow )
        return;

    if ( 'do-core-upgrade' != $action && 'do-core-reinstall' != $action )
        return;

    // Load the updated default text localization domain for new strings
    load_default_textdomain();

    // See do_core_upgrade()
    show_message( __('WordPress updated successfully') );
    show_message( '<span>' . sprintf( __( 'Welcome to WordPress %1$s. <a href="%2$s">Learn more</a>.' ), $new_version, esc_url( self_admin_url( 'about.php?updated' ) ) ) . '</span>' );
    echo '</div>';

    // Include admin-footer.php and exit
    include(ABSPATH . 'wp-admin/admin-footer.php');
    exit();
}
add_action( '_core_updated_successfully', 'tp_dont_redirect_to_about_wordpress', 1, 1 );

Я знаю, что в чате вы показали, что вам трудно удалить действие, поэтому я решил найти решение, которое не удаляет действие, но добавляет его перед этим.

Вышеприведенный код является копией основной функции, которую он перехватывает на _core_updated_successfully, но удаляет перенаправление и несколько сообщений.

Как вы можете видеть, в конце функции есть exit();, поэтому, если вы перехватите эту функцию перед другой, то выйдите должен остановить любые дальнейшие крюки от стрельбы.

ответил Brady 6 J000000Friday12 2012, 15:39:52

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132