0

カスタムクエリを実行していますが、posts_per_pageを返す場合、常に2つ遅れています。イベントと呼ばれるカスタム投稿タイプを使用しています。これは、関数ファイルから投稿を表示するためのコードを取得しています。また、ページネーションを実装したいのですが(これも機能しません)、これは問題になりますか?

現在の日付より前の投稿を含むクエリ内のすべてを返すvardumpを実行しました。ifステートメントの前にダンプしているので想像しますか?何か案は?

何か案は?

<?php
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    //Current exhibitions
    $args = array(
           'post_type' => 'exhibitions',
           'orderby'   => 'exhibition_start_date',
           'meta_key'  => 'exhibition_start_date',
           'order'     => 'ASC',
           'posts_per_page' => 6,
           'paged' => $paged
       );

        $my_query = new WP_Query( $args );

      while ( $my_query->have_posts() ) : $my_query->the_post();
           $exhibition_start_date = get_post_meta($post->ID, 'exhibition_start_date', true);
           //Current

           if ($exhibition_start_date >= date('Y-m-d') ) {
               get_exhibition_container();
           }

        endwhile;

   wp_reset_postdata();
?>

新しいコード:(ページのコンテンツを取り込む最初のループにも追加しましたが、干渉する可能性があると思いましたか?)

<div role="main" class="clearfix">  
    <div class="one-column">
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <h2><?php the_title(); ?></h2>
    <?php the_content(); ?>
    <?php endwhile; else: ?>
     <?php endif; ?>

<?php
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    //Current exhibitions
    $args = array(
           'post_type' => 'exhibitions',
           'meta_query' => array(
           array (
                    'key' => 'exhibition_start_date',
                    'value' => date('Y-m-d'),
                    'compare' => '>='
                 )
            ),
           'orderby'   => 'exhibition_start_date',
           'meta_key'  => 'exhibition_start_date',
           'order'     => 'ASC',
           'posts_per_page' => 10,
           'paged' => $paged
       );

        $my_query = new WP_Query( $args );


      while ( $my_query->have_posts() ) : $my_query->the_post();
           $exhibition_start_date = get_post_meta($post->ID, 'exhibition_start_date', true);
           //Current
            get_exhibition_container();


        endwhile;

   wp_reset_postdata();
?>

<div class="previous-holder">
<?php previous_posts_link(); ?>
</div>
<div class="next-holder">
<?php next_posts_link(); ?>
</div>
4

1 に答える 1

0

ifループで条件を使用する代わりに、meta_queryparamを使用する必要があります。

$args = array(
    'post_type' => 'exhibitions',

    'meta_query' => array(
        array(
            'key' => 'exhibition_start_date',
            'value' => date('Y-m-d'),
            'compare' => '>='
        )
    ),

    'orderby'   => 'exhibition_start_date',
    'meta_key'  => 'exhibition_start_date',
    'order'     => 'ASC',

    'posts_per_page' => 6,
    'paged' => $paged
);

EDIT:ページネーションについて

previous_posts_linkコーデックス:

現在のクエリ内の以前の一連の投稿へのリンクを出力します。

前にprevious_posts_link()andを使用してみてくださいnext_posts_link()wp_reset_postdata()

于 2012-10-08T10:07:40.170 に答える