0

次のクエリを使用するイベント ページがあります。

<?php $portfolioloop = new WP_Query( array( 'post__not_in' => array(4269), 'paged' => get_query_var('paged'), 'post_status' => 'future', 'post_type' => 'whatson', 'exclude' => '4269', 'posts_per_page' => 20, 'order' => 'ASC')); ?>

これは、スケジュールされたすべてのカスタム投稿のリストを表示し、投稿がスケジュールされた日付に達すると、ページを公開することで、リストから削除されます。

それは私が望んでいることとほぼ同じです。公開日になると、イベントは実際にその日に実行されるため、リストから削除するのは正しくありません.

その日の終わりまでリストからの削除を遅らせる方法はありますか?

ps プラグインを使用する必要はないと思うので、使用したくありません。


私はこれを見つけました:

$args = array(
   'posts_per_page' => 3,
   'meta_key' => 'event-start-date',
   'orderby' => 'meta_value',
   'order' => 'ASC',
   'meta_query' => array(
      array( 'key' => 'event-end-date', 'compare' => '>=', 'value' => date('Y-m-d') )
   )
);
query_posts($args);

カスタム フィールドで並べ替えたくないので、投稿の公開日で並べ替えるにはどうすればよいですか?

4

2 に答える 2

1

post_date WHERE ステートメントをクエリに追加して投稿を検索することはできませんか? 次に、post_status をクエリから削除する必要があります。したがって、次のようになります。

<?php $query_string = array( 'post__not_in' => array(4269), 'paged' => get_query_var('paged'), 'post_type' => 'whatson', 'exclude' => '4269', 'posts_per_page' => 20, 'order' => 'ASC'); ?>

// Create a new filtering function that will add our where clause to the query
function filter_where( $where = '' ) {
    $end_of_day = date('Y-m-d') . ' 23:59:59';
    $where .= " AND post_date < '$end_of_day' ";
    return $where;
}

add_filter( 'posts_where', 'filter_where' );
$query = new WP_Query( $query_string );
remove_filter( 'posts_where', 'filter_where' );
于 2013-06-27T09:16:40.130 に答える
0

最後にこれを解決しました:

function my_filter_where( $where = '' ) {
    global $wp_query;
    if (is_array($wp_query->query_vars['post_status'])) {

        if (in_array('future',$wp_query->query_vars['post_status'])) {
        // posts today into the future
        $where .= " AND post_date > '" . date('Y-m-d', strtotime('now')) . "'";
        }
    }
    return $where;
}
add_filter( 'posts_where', 'my_filter_where' );

と:

<?php
$wp_query = array(
        'post__not_in' => array(4269),
        'paged' => get_query_var('paged'),
        'post_type' => 'whatson',
        'exclude' => '4269',
        'posts_per_page' => 20,
        'order' => 'ASC',
        'orderby' => 'date',
        'post_status' =>array('future','published'));
query_posts($wp_query);
?>

                    <?php 
                    if ($wp_query->have_posts()) {
                    while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
                        Content
                    <?php endwhile; // end of the loop.
                    }  ?>

                    <?php if (function_exists('wp_pagenavi')) { wp_pagenavi( array( 'query' => $wp_query ) ); } ?>
于 2013-07-03T15:30:10.920 に答える