web-dev-qa-db-ja.com

WPオフセット付きのクエリは、wp_pagenaviまたは任意のページネーションを中断します

私はオフセットパラメータを使用してWP_Queryを使用するカスタムループに取り組んでいます。問題は、オフセットを追加するとすぐにページ付けが崩れ、ページ番号に関係なく同じリンクが表示されることです。

<?php

$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$query_args = array(
  'post_type' => 'notice',
  'posts_per_page' => 6,
  'offset' => 1,
  'paged' => $paged
);

$the_query = new WP_Query( $query_args );
?>

<?php if ( $the_query->have_posts() ) : ?>

<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>

    <h3><a href="<?php the_permalink(); ?>"><?php the_title() ?></a></h3>

<?php endwhile; ?>

  <?php wp_pagenavi( array( 'query' => $the_query ) ); ?>

<?php endif; ?>

私はここのコードに従ってみました:

https://codex.wordpress.org/Making_Custom_Queries_using_Offset_and_Pagination

しかし、このコードをテーマに追加すると、関連するクエリがすべて壊れます。

これをどのように機能させるかについてのアイデアはありますか?

1
Johann

同じ問題がありました。

これがあなたのために働くかどうかチェックしてください:


<?php
  $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
  $per_page = 9;
  $default_offset = 4;

  if ($paged == 1) {
    $offset = $default_offset;
  } else {
    $offset = (($paged - 1) * $per_page) + $default_offset;
  }

  $args = array(
    'post_type' => 'post',
    'posts_per_page' => $per_page,
    'order'   => 'DESC',
    'offset' => $offset,
    'paged' => $paged
  );

  $loop = new WP_Query($args);

  while ($loop->have_posts()) : 
    $loop->the_post();
?>
  ... HTML
<?php 
  endwhile; 
  wp_pagenavi(array('query' => $loop)); wp_reset_postdata();
?>

1
jordanlenon