【问题标题】:Remove posts from WordPress loop if the date in the post is equal to today's date如果帖子中的日期等于今天的日期,则从 WordPress 循环中删除帖子
【发布时间】:2017-01-03 17:44:57
【问题描述】:

我的措辞可能很糟糕。所以我有一系列来自 CPT 的帖子,叫做“即将到来的游戏”。我正在使用高级自定义字段来设置每个游戏的发布日期。现在,当那场比赛的日期等于今天的日期时,我希望它做点什么。我有两个方案,但现在想选择最简单的方案。

场景 #1 = 起草该帖子

场景 #2* = 从循环中删除该帖子,这样它就不会出现在前端,所以它仍然被发布

*我的理想选择

这是我的循环的一部分:

$time = current_time( 'timestamp' ); // Get current unix timestamp

$cpt_posts_per_page = ( is_front_page() ) ? 4 : -1;
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$args = array(
        'post_type'                 => 'upcoming-games',
        'post_status'               => 'publish',
        'orderby'                   => 'meta_value',
        'meta_key'                  => 'release_date',
        'meta_value'                => $time,
        'meta_compare'              => '>=',
        'order'                     => 'ASC',
        'posts_per_page'            => $cpt_posts_per_page,
        'paged'                     => $paged
    );

    $upcoming_games = new WP_Query( $args );

    ?>

【问题讨论】:

    标签: php wordpress loops date


    【解决方案1】:

    现在不能测试,但是你可以从中得到一些想法。

    add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
    
    function custom_pre_get_posts_query( $q ) {
    
        if ( ! $q->is_main_query() ) return;
        if ( ! $q->is_post_type_archive() ) return;
    
        if ( ! is_admin() && (is_blog() || is_archive()) ) {
    
            $q->set( 'date_query', array(array(
                'year'  => date("Y"),
                'month' => date("m"),
                'day'   => date("d"),
                'inclusive' => false
            )));
    
        }
    
        remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
    

    在你的代码中你也可以使用

     $arg = array( 'date_query' => array(
                'year'  => date("Y"),
                'month' => date("m"),
                'day'   => date("d"),
                'inclusive' => false
            ) )
    

    作为 WP_Query() 参数。

    【讨论】:

    • 抱歉,当我指的是今天的日期时,我只是指今天/当前的任何一天,而不是 2017 年 1 月 4 日。
    • 所以我只是举了一个例子,你可以用实际情况替换它,更新它,我希望你理解它并实现它。
    • 我可以把它放到我的functions.php中吗?
    • @DarrenBachan 如果您无法理解它,最好花一些时间在 codex 上。在不了解它的情况下,您可以使用它,是的,您可以将其放在 functions.php 中,但根据您的情况,您可能想稍微修改一下。如果您觉得有帮助,请不要忘记点赞。
    猜你喜欢
    • 1970-01-01
    • 2013-12-26
    • 2014-11-27
    • 2019-09-28
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多