web-dev-qa-db-ja.com

無効にする WP コアアップデートだがEメール通知を送る

WPコアアップデートを無効にして、WPアップデートをインストールできることを通知する電子メールを送信する方法はありますか? WP更新に関する通知メールは、WPが更新された後、すべてを無効にする方法(コア更新と通知)の後に送信されることを私は知っています。

私は以下のコードを利用しようとしています:

function core_update_notification(){
    global $wp_version;

   $core_update = wp_version_check();

   if ($core_update != NULL || $core_update !=FALSE){
      $to = "[email protected]";
      $subject = "WP update is available!";
      $message = "You have WP update ready to install";
      $headers = 'From: My Website <[email protected]>' . "\r\n";

      wp_mail( $to, $subject, $message, $headers );
   }

}

   add_action( 'init', 'core_update_notification' );
   add_filter( 'auto_update_core', '__return_false' );

しかし、どういうわけか、その考えは私が期待したようには働いていません。

UPDATE#1wp_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 = "[email protected]";
      $subject = "WP update is available!";
      $message = "You have WP update ready to install";
      $headers = 'From: My Website <[email protected]>' . "\r\n";

      wp_mail( $to, $subject, $message, $headers );
   }

}

   add_action( 'init', 'core_update_notification' );
   add_filter( 'auto_update_core', '__return_false' );

しかしどういうわけかEメールは送られません

6
JackTheKnife

コードを切り替えて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 = "[email protected]";
      $subject = "WP update is available!";
      $message = "You have WP update ready to install";
      $headers = 'From: My Website <[email protected]>' . "\r\n";

      wp_mail( $to, $subject, $message, $headers );
   }

}

   add_action( 'init', 'core_update_notification' );
   add_filter( 'auto_update_core', '__return_false' );

私はそれがここからの手順に従ってその場合に毎日のwp_schedule_eventを使用することが最善の解決策だと思います: https://codex.wordpress.org/Function_Reference/wp_schedule_event

3
JackTheKnife