问题描述
在 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
基于 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 插件。
最佳解决方案
不要删除该操作,但添加您自己的操作之前。如果您删除该操作,您将永远不会收到消息,表示升级成功。在这里,您可以提供自己的下一步做什么信息。
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();
,所以如果你在另一个之前挂接这个功能,那么退出应该停止任何进一步的钩子的点火。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。