我试图在每周一午夜创建一个电子邮件提醒,该提醒将发送过去一周在该网站上发布的帖子数量。
我创建了两个变量:$post_published_to_date
这是该站点上帖子的总数(我在这里假设该站点刚刚创建,目前还没有任何帖子),以及$published_posts
这是过去一周发布的帖子数量。
我用过date(\'D\', $timestamp) === \'Mon\' && $timestamp = strtotime(\'midnight\')
在if
声明以确定是否是周一午夜。如果是,将向管理员发送一封电子邮件,其中包含发布的帖子数。
我不确定是否正在设置$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;
}
?>
这会像预期的那样工作吗?您是否建议进行更好的修改?
谢谢你的时间和帮助
最合适的回答,由SO网友:jdm2112 整理而成
以下是WP\\u查询的基本用法,该查询返回一个对象,其中包含当前星期的所有帖子$query
. 最后一行回显“found\\u posts”属性,该属性提供周查询的计数。
$args = array(
\'date_query\' => array(
array(
\'year\' => date( \'Y\' ),
\'week\' => date( \'W\' ),
),
),
);
$query = new WP_Query( $args );
echo $query->found_posts;
出于您的目的,我不知道这一周是基于经验日历还是基于您网站的设置>常规>日期设置。
通过一点测试,您应该能够为每周的电子邮件生成可靠的结果。https://codex.wordpress.org/Class_Reference/WP_Query#Date_Parameters