每周收到发布的帖子数

时间:2015-12-08 作者:Graham Slick

我试图在每周一午夜创建一个电子邮件提醒,该提醒将发送过去一周在该网站上发布的帖子数量。

我创建了两个变量:$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; 
    }

    ?>
这会像预期的那样工作吗?您是否建议进行更好的修改?

谢谢你的时间和帮助

1 个回复
最合适的回答,由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

相关推荐

Even/Odd every two posts

我需要每两篇文章显示一个不同的布局,是否可以使用偶数/奇数来实现这一点?<?php while (have_posts()): the_post() ?> <?php if ($wp_query->current_post % 2 == 0): ?> even <?php else: ?> odd <?php endif ?> <?php endwhile