WordPress分页给出404除非我设置"博客页面最多显示"读到1

时间:2014-11-04 00:35:28

标签: php html css wordpress pagination

我正在使用"自定义帖子类型"在MAMP上进行本地开发。和#34;自定义字段"插件。我有一个自定义的帖子类型"产品"以及"类型的自定义分类。"

我试图在" Taxonomy.php"中使用我的分页。因为那是我要显示自定义帖子类型的"产品"使用我的自定义分类法"类型"并使用条件在同一个taxonomy.php上生成不同的内容。

这是我从css-tricks得到的taxonomy.php中的代码:

<?php
  $temp = $wp_query; 
  $wp_query = null; 
  $wp_query = new WP_Query(); 
  $wp_query->query('showposts=3&post_type=products'.'&paged='.$paged); 

  while ($wp_query->have_posts()) : $wp_query->the_post(); 
?>

// my content from my custom field that I want paginated

<p><?php the_field('image'); ?></p>

<?php endwhile; ?>

<nav>
    <?php previous_posts_link('&laquo; Newer') ?>
    <?php next_posts_link('Older &raquo;') ?>
</nav>

<?php 
  $wp_query = null; 
  $wp_query = $temp;  // Reset
?>

这个问题已经在网络上被问了很多,我已经阅读了至少30篇不同的文章和博客,但似乎仍无法找到解决方案。使用这种分页方法,我从css-tricks获得唯一的问题是每当我尝试转到下一页时,我会不断收到404错误消息,除非我设置我的&#34;博客页面最多显示&#34;在设置中为1&gt;阅读。如果我这样做那么它可以工作,否则它会给我404页面。顺便说一句,我的固定链接设置为Post Name。

所以我可以在这看到我的分页:

http://localhost/MyWebsite/types/cars/

但是当我到达这里时,我得到了404页面。

http://localhost/MyWebsite/types/cars/page/2/

我已阅读有关Flush方法的内容,但这不起作用。我只激活了2个插件(自定义帖子类型和字段),这些都不是问题。如何修复404错误?

我已经进一步诊断出这个问题,我发现了最新情况。这是我在terminology.php中的代码:

<?php
  $args = array(
    'post_type'      => array( 'products' ),
    'posts_per_page' => 5,
    'paged'          => ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1
  );
  $products_query = new WP_Query( $args );

  $temp = $wp_query; 
  $wp_query = null; 
  $wp_query = $products_query; 

  while ($products_query->have_posts()) : $products_query->the_post(); 
?>

// content to display
<p><?php the_field('image'); ?></p>

<?php endwhile; ?>

<nav>
    <?php previous_posts_link('&laquo; Newer') ?>
    <?php next_posts_link('Older &raquo;') ?>
</nav>

<?php 
  $wp_query = null; 
  $wp_query = $temp;  // Reset
?>

请耐心等待,因为这有点令人困惑。我会尽力清楚地解释&#34;博客页面最多显示&#34; 设置&gt;之间的区别阅读和我的 posts_per_page参数。

我有一个本田类别,其子项为 Accord ,我的 3 我的自定义帖子类型分配给 Accord

现在,如果我改变了我的 posts_per_page论点那么无论有多少&#34;产品&#34;我有&#34; Accord&#34;即使你没有足够的数据,它也会一直显示出来。

因此,如果我将其设置为5并且我有3个产品,它仍将显示5个重复或来自其他类别。当我点击下一个分页时,页面将只有我所拥有的许多项目。也就是说,如果&#34;博客页面最多显示&#34; 设置为1,这将我带到下一点。

现在改变&#34;博客页面最多显示&#34; 的区别在于,即使我将每个页面的帖子设置为5,我只有3&#34;产品& #34;但我将&#34;博客页面最多显示为&#34; 更改为3它不会转到下一页,因为我只有3&#34;产品&#34;符合条款。

如果我要将&#34;博客页面最多显示&#34; 更改为1,我将能够前进3页,因为我有3个项目。

这有点像更改&#34;博客页面最多显示&#34; 更改WordPress的核心,因此无论您在中显示多少内容posts_per_page args 只会在&#34;博客页面最多显示&#34; 中设置的数量很多。

分页计数似乎基于&#34;博客页面最多显示&#34; ,而不是posts_per_page。我可以将每页的帖子设置为10,并且&#34;博客页面最多显示&#34; 设置为2,它会显示10但只计算每个页面上确实有2个含义我只能进入我的&#34; Accord&#34;的第2页。这两个词都有10个显示。

获取模式? WordPress每页计算2个产品,即使它显示10个。所以它告诉分页它不能超过第2页,因为我只有3个产品。

1 个答案:

答案 0 :(得分:0)

但是,如果您有自定义帖子类型产品和分类类型,您将在以下位置显示您的内容: archive-products.php taxonomy-types.php 如果需要,您可以使用pre_get_posts操作修改查询,然后在这些文件上写下您想要的标记,例如:

把它放在你的functions.php

<?php 
  add_action( 'pre_get_posts', 'mr_modify_archive_taxonomy_query' );

  function mr_modify_archive_taxonomy_query( $query ) {
    if ( !is_admin() && $query->is_main_query() ) {
      if ( is_post_type_archive( 'products' ) || is_tax( 'types' ) ) {
        $query->set( 'posts_per_page', 3 );
      }
    }
  }
?>

使用默认loop

<?php
if ( have_posts() ): 
    while ( have_posts() ): the_post();
        printf( '<p>%s</p>', get_the_field( 'image' ) );
    endwhile;
    previous_posts_link('&laquo; Newer');
    next_posts_link('Older &raquo;');
endif;
?>