0

2つの特定の日付の間に公開された投稿を一覧表示したいだけです

私はここで解決策を見つけましたhttp://www.wprecipes.com/wordpress-loop-get-posts-published-between-two-particular-dates

そして私のコードはここにあります、残念ながらこれは機能していません!!

<?php
          function filter_where($where = '') {
                $where .= " AND post_date >= '2012-05-09' AND post_date <= '2012-05-11'";
                //$where .= " AND post_date > '" . date('Y-m-d', strtotime('-30 days')) . "'";
            return $where;
          }
        add_filter('posts_where', 'filter_where');
        query_posts($query_string);
        ?>
               <?php while (have_posts()) : the_post(); ?>    
                    <h1><?php the_title(); ?></h1>
               <?php endwhile; ?>
4

1 に答える 1

4

query_posts()まず、グローバルを破壊し、条件文などを台無しにするため、使用しないでください...

このコードがどこで実行されているかについては言及していません。たとえば、ページテンプレート上にある場合、クエリに$ query_stringを渡すと、グローバル$ wp_queryオブジェクトを使用しており、ページpost_typesのみをクエリするため、投稿は取得されません。

query_postsの代わりに新しいWP_Queryを使用してコードをテストしましたが、正常に機能しました。

function filter_where( $where = '' ) {

$where .= " AND post_date >= '2012-05-01' AND post_date < '2012-05-14'";
return $where;
}

add_filter( 'posts_where', 'filter_where' );

$query = new WP_Query( array( 'post_type' => 'post' ) );

    echo '<div id="content" style="color: white!important;">';
    echo '<h1>And here are the posts……&lt;/h1>';
    while( $query->have_posts() ) : $query->the_post();
    
    echo '<h2>'. get_the_title() .'</h2>';
    
    
    endwhile;
    echo '</div>';
    
    
remove_filter( 'posts_where', 'filter_where' );
于 2012-05-14T06:55:10.493 に答える