4

同様の質問がされていますが、何が欠けているのかわかりません!

通常のアーカイブまたはカテゴリ ページと同様に、カスタム タイプ フィールド用の静的ページがありますが、ページネーションが機能しません。手動
でページ 2 に移動すると (つまり、リンク .../page/2 に追加すると)、「新しい投稿」リンクが表示されますが、古い投稿の最初のページには表示されません! next_posts_link() は存在しないようです (div が挿入されていないなど)

これが私のコードです:

  $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

  $query_args = array (
        'post_type' => 'bb_articoli',
        'meta_key' => 'bb_data-pubblicazione',
        'orderby' => 'meta_value_num',
        'order' => 'DESC',
        'posts_per_page' => 2,      //for testing purposes
        'paged' => $paged,
        'meta_query' => array(
            array('key' => 'bb_fonte-pubblicazione',
                  'value' => 2,
                  'compare' => '='
                  )
        )
  );

  $query = new WP_Query($query_args);

    if ( $query->have_posts() ) :
       while ( $query->have_posts()) :
             $query->the_post();
             get_template_part( 'content' , get_post_format());
       endwhile;

     next_posts_link();
     previous_posts_link();

     else :
         get_template_part( 'content', 'none' );
 endif;

どんな助けでも大歓迎です。ありがとう
B

参考までに:22で子テーマを使用する

4

3 に答える 3

15

ソリューションが機能する理由は、グローバル $wp_query 変数を上書きしているためです。より良い解決策は、$query->max_num_pages を next_posts_link() に追加することです。

next_posts_link('« Older Entries', $query->max_num_pages)

$query は、新しく作成したオブジェクトの名前です。このようにして $wp_query を保持します。

于 2013-03-22T10:19:57.517 に答える
9

わかりましたので、今後の参考のために共有したいと思います。

理由は不明ですが、next_posts_link() と previous_posts_link() は、クエリ オブジェクトが呼び出された場合にのみ正しく機能します$wp_query

したがって、それに応じてクエリ オブジェクトを変更すると、すべてが機能します。

$wp_query = new WP_Query($query_args);

if ( $wp_query->have_posts() ) :
   while ( $wp_query->have_posts()) :
         $wp_query->the_post();
           // do something
   endwhile;

 next_posts_link();
 previous_posts_link();

私にとってはうまくいきますが、完全にテストしていません。私が見る限り、これはどこにも文書化されておらず、確かにコーデックスにもありません。madhavaji のコメント 4 で答えが見つかりました。

乾杯

于 2013-01-17T16:51:56.377 に答える
3

同じ問題がありました。すべての解決策を試しましたが、どれも役に立ちませんでした。

したがって、上記の解決策でこの問題を解決できない人のために、私が作成したのは次のとおりです。

<?php
    global $wp_query, $paged;

    if( get_query_var('paged') ) {
        $paged = get_query_var('paged');
    }else if ( get_query_var('page') ) {
        $paged = get_query_var('page');
    }else{
        $paged = 1;
    }

    $wp_query = null;
    $args = array(
        'post_type' => array("fashion", "tv", "sport"),
        'orderby'=>'date',
        'order'=>'DESC',
        'posts_per_page' => 5,
        'paged' => $paged
    );
    $wp_query = new WP_Query();
    $wp_query->query( $args );

    while ($wp_query->have_posts()) : $wp_query->the_post();
        /* YOUR CONTENT HERE */
    endwhile;

    next_posts_link('next');
    previous_posts_link('previous');

    wp_reset_query();
?>

next_posts_link()関数とprevious_posts_link()関数は値global $pagedと値を読み取っているため、グローバル変数でコードを開始することが重要$wp_queryです。

お役に立てれば幸いです!

于 2014-01-03T14:11:22.623 に答える