web-dev-qa-db-ja.com

毎週公開された投稿数を受け取る

私は、毎週月曜日の深夜に、そのサイトで過去1週間に公開された投稿数を送信する電子メールアラートを作成しようとしています。

私は2つの変数を作成しました:$post_published_to_dateはサイト上の投稿の総数です(ここではまだサイトが作成されていないと仮定しています)と$published_postsは先週の投稿数です。

私はifステートメントでdate('D', $timestamp) === 'Mon' && $timestamp = strtotime('midnight')を使用して、月曜日の深夜0時かどうかを調べます。そうであれば、公開された投稿の数を記載した電子メールが管理者に送信されます。

最後に$published_postsを0に設定することがうまくいくのかどうかはよくわかりませんが、$post_published_to_dateが毎回0にリセットされるのは怖いです。私はPhpを始めているので、ここではよくわかりません。

 <?php
    $post_published_to_date = 0;
    $published_posts = wp_count_posts()->publish;

    if(date('D', $timestamp) === 'Mon' && $timestamp = strtotime('midnight')) { 
    $post_published_to_date = $post_published_to_date + $published_posts;


    add_action( 'publish_post', 'number_of_posts_published', 10 ,2 );
    function number_of_posts_published( $ID, $post, $published_posts; ) {
        if ( 'post' !== $post->post_type)
            return;

        $to = '[email protected]'
        $subject = 'Number of posts last week';
        $headers = array('Content-Type: text/html' );
        $message = '<h3> Hello ! </h3> <p>  

        Last week, $published_posts posts were published on your site. ';


        wp_mail( $to, $subject, $message, 'Content-Type: text/html' ); 
    }


    $published_posts = 0; 
    }

    ?>

これは予想どおりに機能しますか。より良い習慣である変更を何かアドバイスしますか?

あなたの時間と助けてくれてありがとう

1
Graham Slick

これは、今週のすべての投稿を含むオブジェクトを$queryとして返すWP_Queryの基本的な使い方です。最後の行は、週の問い合わせに対するカウントを提供する、 `found_posts 'というプロパティを表示しています。

    $args = array(
        'date_query' => array(
            array(
                'year' => date( 'Y' ),
                'week' => date( 'W' ),
            ),
        ),
    );
    $query = new WP_Query( $args );
    echo $query->found_posts;

あなたの目的のために、その週が経験暦に基づいているのか、それともあなたのサイトの設定>一般>日付設定に基づいているのか私は知りません。

少しのテストで、あなたは毎週あなたのEメールに対して信頼できる結果を生み出すことができるはずです。 https://codex.wordpress.org/Class_Reference/WP_Query#Date_Parameters

1
jdm2112