问题描述
是否有任何方法来禁用 WP 核心更新,但发送通知邮件 WP 更新可用于安装?我知道关于 WP 更新的通知电子邮件是在 WP 更新后的事实以及如何禁用所有 (核心更新和通知) 之后发送的。
我正在尝试使用以下代码:
function core_update_notification(){
global $wp_version;
$core_update = wp_version_check();
if ($core_update != NULL || $core_update !=FALSE){
$to = "me@example.com";
$subject = "WP update is available!";
$message = "You have WP update ready to install";
$headers = 'From: My Website <myname@mywebsite.com>' . "rn";
wp_mail( $to, $subject, $message, $headers );
}
}
add_action( 'init', 'core_update_notification' );
add_filter( 'auto_update_core', '__return_false' );
但不知何故,这个想法不是我所期望的方式。
更新#1 看起来像是这样的, wp_version_check() 执行版本检查,然后设置 update_core 瞬态,如果有新版本。它不返回任何有价值的东西,这就是为什么上面的代码失败。需要使用 get_site_transient('update_core')
和更新的代码看起来像
function core_update_notification(){
global $wp_version;
$installed_version = $wp_version;
$uc_transient = get_site_transient('update_core');
if ( empty($uc_transient->updates) ) return;
$updates = $uc_transient->updates;
$current_version = $updates[0]->current;
if (version_compare($installed_version, $current_version, "<")) {
$to = "me@example.com";
$subject = "WP update is available!";
$message = "You have WP update ready to install";
$headers = 'From: My Website <myname@mywebsite.com>' . "rn";
wp_mail( $to, $subject, $message, $headers );
}
}
add_action( 'init', 'core_update_notification' );
add_filter( 'auto_update_core', '__return_false' );
但不知何故不发送电子邮件
最佳解决办法
看起来像切换代码来检查 get_site_transient('update_core')
我已经得到了我需要的只是动作必须在适当的优先级或钩子 (想法/建议?) 执行。下面的工作代码:
function core_update_notification(){
global $wp_version;
$installed_version = $wp_version;
$uc_transient = get_site_transient('update_core');
if ( empty($uc_transient->updates) ) return;
$updates = $uc_transient->updates;
$current_version = $updates[0]->current;
if (version_compare($installed_version, $current_version, "<")) {
$to = "me@example.com";
$subject = "WP update is available!";
$message = "You have WP update ready to install";
$headers = 'From: My Website <myname@mywebsite.com>' . "rn";
wp_mail( $to, $subject, $message, $headers );
}
}
add_action( 'init', 'core_update_notification' );
add_filter( 'auto_update_core', '__return_false' );
我认为最好的解决方案是使用 wp_schedule_event
每日 wp_schedule_event
,从下列步骤:https://codex.wordpress.org/Function_Reference/wp_schedule_event
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。