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

时间:2012-07-06 作者:fuxia

在里面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\' );
}
它……什么都没有。我仍然被重定向。使用单站点和多站点安装进行测试。

像往常一样,我想我错过了一些显而易见的事情<如何做得更好?

更新

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

<?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;
}
现在,我们看到了成功消息,没有调用其他操作。你可以download the plugin on GitHub. 将其用作常规插件或MU插件。

1 个回复
最合适的回答,由SO网友:Scott 整理而成

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

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(); 在函数结束时,如果你先钩住这个函数,那么退出应该阻止任何进一步的钩子触发。

结束

相关推荐

Redirection with a wildcard

我已将wordpress安装放在以下位置:http://www.mydomain.com/cms 测试时间,以及在数据库中实现的时间。现在我将整个事情切换到:http://www.mydomain.com/ (根)。如何才能告诉所有发送给/cms的请求都是/(root)。我知道htaccess可以做到这一点,但我更喜欢插件或者如何将安装从一个目录迁移到另一个目录?