如果帖子中的日期等于今天的日期,则从WordPress循环中删除帖子

时间:2017-01-03 17:44:57

标签: php wordpress loops date

我可以写得非常糟糕。所以我有一系列来自CPT的帖子叫做#34;即将到来的游戏"。我正在使用高级自定义字段来设置每个游戏的发布日期。现在,当该游戏的日期等于今天的日期时,我希望它能够做些什么。我有两个场景,但是现在想要最简单的事情。

场景#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 );

    ?>

1 个答案:

答案 0 :(得分:0)

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

RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
request.getServletPath();

在您的代码中也可以使用

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' );

作为WP_Query()参数。