問題描述
在 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。