我正在使用"自定义帖子类型"在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('« Newer') ?>
<?php next_posts_link('Older »') ?>
</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('« Newer') ?>
<?php next_posts_link('Older »') ?>
</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个产品。
答案 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('« Newer');
next_posts_link('Older »');
endif;
?>