核心升级后如何防止重定向到“关于”?


9

在其中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' );
}

它没有任何作用。我仍然被重定向。经过单站点和多站点安装测试。

我想我像往常一样想念一些明显的东西。:)
如何做得更好?

更新资料

根据布雷迪的回答,我构建了一个非常简单的版本:

<?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插件。


_core_updated_successfully通过@Brady行动提到似乎从3.8失踪。*(> 3.7?)。有任何关于AA替代的想法吗?
krembo99 2014年

@ krembo99仍然存在:/wp-admin/includes/update-core.php文件末尾。
fuxia

是的..我的坏。正在查看自定义核心安装。
krembo99

Answers:


6

不要删除该动作,而要在其之前添加自己的动作。如果删除该操作,将永远不会收到消息,说明该操作已成功升级。在这里,您可以提供自己的下一步操作信息。

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();,该函数的末尾有一个,因此,如果您在另一个函数之前钩住该函数,则出口应停止触发其他任何钩子。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.