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