私は、毎週月曜日の深夜に、そのサイトで過去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;
}
?>
これは予想どおりに機能しますか。より良い習慣である変更を何かアドバイスしますか?
あなたの時間と助けてくれてありがとう
これは、今週のすべての投稿を含むオブジェクトを$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