<?php
$temp = $wp_query;
$wp_query = null;
$wp_query = new WP_Query();
$wp_query->query('showposts=6&post_type=news'.'&paged='.$paged);
while ($wp_query->have_posts()) : $wp_query->the_post();
?>
<!-- LOOP: Usual Post Template Stuff Here-->
<?php endwhile; ?>
<nav>
<?php previous_posts_link('« Newer') ?>
<?php next_posts_link('Older »') ?>
</nav>
<?php
$wp_query = null;
$wp_query = $temp; // Reset
?>
出错了。缺少代码标签?
太棒了,这个方法有效!
这里缺少代码?我真的很需要这个!
去看看这个
http://wordpress.org/support/topic/custom-post-type-taxonomy-pagination
这对我帮助很大,感谢你的发布。使用该主题中的**第三**个帖子,我的分类分页也开始工作了。即使作者声称他的分页不正常,但对我来说似乎工作正常。
这太荒唐了,它还没有更新,或者至少在 90% 的代码缺失的情况下被撤下。
已修复。
这个不起作用!
是的,它确实有效 :-)
哦,我将祈求上帝保佑你一生健康,Chris。你为我节省了大量时间。
非常感谢!
致 Reinaldo > 它确实有效,即使没有任何文章类型。我在 archives.php 页面上使用它,该页面显示了那里所有的类别和归档。
嗨,这对我的效果有一半。我的自定义文章类型显示正确,但当我点击“更旧”链接时,它会跳转到 /page/2/,但帖子与上一页保持一致。所以它没有显示给我更旧的帖子,而且“更新”链接也没有出现在 /page/2/ 上。任何建议都将不胜感激!谢谢!
谢谢,像魅力一样工作!:)
我遇到了与 Andy 相同的问题……我得到一个指向第 2 页的“更旧”链接……但是点击该链接后,第 2 页包含完全相同的帖子,而“更旧”链接会一遍又一遍地带我到同一个目的地。
你最终解决了吗?我遇到了同样的问题,任何见解都会不胜感激。提前致谢。
此页面底部有一些自定义循环示例
http://codex.wordpress.org/Pages
对我来说,当涉及到分页时,query_posts 似乎更可靠。
这是我的博客上有关自定义文章类型数字分页的链接 -> http://www.designphilic.com/2012/08/wordpress-custom-post-type-pagination.html
更新 URL:自定义文章类型分页
超级棒,谢谢 Tirumal,太棒了。为我节省了大量时间。
将来我会多次使用此代码。
太棒了!
这对我的客户刚刚完成的“推荐”自定义文章类型非常有效
http://staging.priebeassoc.com/references/
我向你的 Kickstarter 捐款肯定是有原因的……如果我搜索任何与 CSS 或 WP 相关的内容,CSS-tricks 总是会带着正确的答案出现。
感谢 Chris!
在这行
我如何包含多个文章类型?
例如
$wp_query->query(
=> ‘6’,array(
'posts_per_page
‘post_type’ => array(
‘books’,
‘movies’,
‘links’
),
‘paged’ => $paged
)
)`
感谢你的这篇文章,非常有帮助!
非常感谢你发布这篇文章……在我花了 7 个小时扯头发并尝试了所有方法后,这个解决方案使下一页/上一页可用。
我正在使用自定义文章类型类别,并将此代码组合如下,以选择当前类别并显示当前类别中的帖子循环
$current_cat = get_query_var(‘cat’);
$temp = $wp_query;
$wp_query = null;
$wp_query = new WP_Query();
$wp_query->query(array(
‘post_type’=>’customposttypename’,
‘paged’ => $paged,
‘posts_per_page’ => 6,
‘cat’=> $current_cat
));
while ($wp_query->have_posts()) : $wp_query->the_post();
endwhile; // 结束循环。
<?php previous_posts_link( __( '< Newer Articles’, ‘twentyten’ ) ); ?>
<?php next_posts_link( __( 'Older Articles >’, ‘twentyten’ ) ); ?>
$wp_query = null;
$wp_query = $temp; // 重置
希望这能帮助其他人
这个博客破坏了我的代码,所以我不得不删除所有 php 标签,但你可以看到代码的组成
英雄西蒙!谢谢!:D
嗨,我已经浪费了 4 个小时,但使用这段代码就成功了!
非常感谢朋友!
这对我的不起作用,因为我尝试在我的主页上这样做,那就是我的问题。我发现了一个简单的方法来解决在我们的主页上对自定义文章类型进行分页的问题。
希望这段代码能帮助到其他人 :)
https://gist.github.com/3793123
嗨..这段代码现在对我有用。但有一个问题:标题栏始终显示“页面未找到”。我如何解决这个问题?
谢谢,Abel!这正是我需要的。我快抓狂了,因为我得到了“/page/2/”结构,但没有新帖子。你的代码解决了问题。
谢谢,Abel!
谢谢 Able,这正是我需要的。
不适用于偏移量
使用偏移量,所有页面都具有第一个帖子。
现在有效了 xD
哎,在 index.php 上使用它时不起作用 :( 似乎无法正常运行
嗨,Amber
Abel Cabans 在上面几条评论中的代码对我在 index.php 上有效
更新!
我有两种自定义帖子类型:照片和诗歌。
我有两个页面使用你的代码显示查询:画廊和诗歌。
画廊有效。诗歌没有。关于为什么有猜测吗?
我现在已经疯了整整两天了……从网上复制粘贴了各种随机代码……
结果发现……页面名称不能与帖子类型名称相同。就这样。
这里你的页面似乎是所有关于 CPT 和分页的页面锚点。因此,希望能够广为人知。我希望我能为此做一个电视广告
作为指南……这是我的 gallery.php 模板……用于页面 http://www.mydomain.com/gallery
query(‘showposts=12&post_type=photo’.’&paged=’.$paged);
while ($wp_query->have_posts()) : $wp_query->the_post();
?>
Derek,
试试这个
自定义帖子类型分页解决方案
希望对您有所帮助。
Ctrl+c
Ctrl+v
工作很棒。谢谢!
如果我用它在页面上显示自定义帖子类型,它对我有用。但是,出于某种原因,如果我在‘catalogue-archive.php’上使用完全相同的代码,分页就会中断。你知道发生了什么事吗?
嗨,非常感谢。它工作正常。我有一个问题。如果我想从特定作者那里显示自定义帖子类型,我需要添加什么?
@Rik : 你可以使用这个
$paged = ( get_query_var( ‘paged’ ) ) ? get_query_var( ‘paged’ ) : 1;
$offset = ( 1 * $paged ) – 0;
$args=array(‘paged’=>$paged, ‘posts_per_page’=>1, ‘post_type’=>’yourCPT’, ‘offset’ => $offset, ‘author_name’=>’yourname’);
query_posts($args);
while ( $wp_query->have_posts() ) : $wp_query->the_post();
嗨,Erwin,感谢您的回复。它根本不起作用。对不起。
我找到了另一种解决方案。它部分有效。
$temp = $wp_query;
$wp_query = null;
$wp_query = new WP_Query();
$wp_query->query(‘showposts=10&post_type=listings’.’&author_name=’.$author_name.’&paged=’.$paged);
while ($wp_query->have_posts()) : $wp_query->the_post();
但我现在又遇到了另一个问题。此刻,它为所有现有的作者计算了 8 页,每页 10 个帖子。因此,当有 18 个帖子的作者时,它也会计算 8 页而不是 2 页。当我点击第 3 页时,它会显示 404 错误。我该怎么办?
上面使用的重置
$wp_query = null;
$wp_query = $temp; // 重置
更好,还是与
wp_reset_postdata();
谢谢
如果我将查询变量更改为 $loop 它不起作用,但如果是 $wp_query 它却有效,这是很奇怪的!
这是因为 $wp_query 是一个全局变量,它被用于许多其他函数中,包括与分页相关的函数。因此,当您覆盖 $wp_query 时,您会更改其他函数将使用的值 - 否则您只是更改了自己的私有循环变量,该变量在其他地方没有被引用。
太棒了,这是唯一有效的代码!(你可能已经知道了)
我用它来点击自定义分类法(类别)中的所有帖子。
有没有办法只显示当前分类法的上一个/下一个帖子?
你好,Trisha,
我想要做同样的事情 - 对当前分类法进行分页 - 你最终成功了吗?
谢谢,
Mark
我已经遇到这个问题有一段时间了,并且无法在 beforetheconcert.com 上让它正常工作。点击“更多视频”按钮,它只会进入第 2 页。应该有第 3 页,但我不确定为什么它停止了。不确定是代码问题,无限滚动问题,还是自定义帖子类型问题。
为了让它正常工作,我在管理员中的阅读部分设置了 3 个帖子,我希望它在主页、类别页面等页面上显示 6 个帖子。但是,当我更改代码以尝试这样做,并且点击“更多视频”按钮时,没有任何弹出。因此,我必须在阅读部分设置 3 个帖子才能至少正常工作。但是,在子类别模板中,每页显示 3 个帖子并不理想。如果我更改为每页 1 个帖子,它会加载所有视频,但我不希望这样,因为它在类别页面上看起来很奇怪。有什么想法可以解决这个问题?
干杯,Chris,效果很好!
这是对我有用的修复方法。我对 Chris 的原始代码进行了一些小改动:我在 is_tag 后面添加了 is_home
add_filter(‘pre_get_posts’, ‘query_post_type’);
function query_post_type($query) {
if(is_category() || is_tag() || is_home()) {
$post_type = get_query_var(‘post_type’);
if($post_type)
$post_type = $post_type;
else
$post_type = array(‘post’, ‘page’, ‘videos’,’short-stories’, ‘long-stories’, ‘nav_menu_item’);
$query->set(‘post_type’,$post_type);
return $query;
}
}
function wpsites_npp_navigation_links() {
if( 'portfolio' == get_post_type() ) {?>
<?php previous_post('« « %', 'Previous', 'no'); ?>
| <?php next_post('% » » ', 'Next', 'no'); ?>
<?php
} }
add_action('genesis_after_post_content', 'wpsites_npp_navigation_links', 5 );
谢谢 @Brad Dalton!
正是我在寻找的东西 - 我搜索了整个 WP 代码库/论坛,但一无所获!
你真棒 \m/!:)
如果您运行的是 Genesis 2.0 HTML 5,现在实际上有一种更好的方法来做到这一点,因为它为样式化上一个和下一个帖子链接添加了类。
钩子也发生了变化,因此如果您在 Genesis 上运行启用 HTML 5 的子主题,则需要使用第 3 个参数进行定位。
实际上,我没有使用 Genesis @Brad - 我只需要创建一个 **下一个和上一个** 帖子类型链接,而不需要实际的 *文本*,因为它在页面的特定区域看起来不好 - 我只需要 **左边的双角引号和右边的双角引号**,现在看起来很棒!:)
我一直尝试使用各种分页函数 - 但是我的主题一直断裂 - 我快要放弃了,直到我看到了你这里这段很棒的代码!:)
(*完成后,我一定会将链接指向您的网站*)
再次感谢您,Brad!:)
我实际上写了一个插件,对我有用。
https://github.com/adampatterson/nextpost
如果您成功或失败,请告诉我,它应该在单个自定义帖子中为您提供下一个/上一个链接,我认为它在自定义分类法中不起作用,但请告诉我!:)
谢谢:)
对我有用
太棒了!它立即起作用。但如果还没有帖子怎么办?也许你可以使用
if ($wp_query->have_posts()) : while ($wp_query->have_posts()) : $wp_query->the_post();
代替
while ($wp_query->have_posts()) : $wp_query->the_post();
以便我们可以添加“else”语句来显示 **错误** 消息。
这是我正在使用的
<?php
$temp = $wp_query;
$wp_query = null;
$wp_query = new WP_Query();
$wp_query->query('showposts=6&post_type=snippets'.'&paged='.$paged);
if ($wp_query->have_posts()) : while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
<div class="entry">
<h2 class="title"><?php the_title(); ?></h2>
<?php the_excerpt(); ?>
</div>
<?php endwhile; ?>
<div class="navigation">
<div class="alignleft"><?php next_posts_link('« Older Entries') ?></div>
<div class="alignright"><?php previous_posts_link('Newer Entries »') ?></div>
</div>
<?php $wp_query = null;
$wp_query = $temp;
?>
<?php else : ?>
<h2>未找到</h2>
<p>抱歉,但您正在寻找不存在的东西。</p>
<?php endif; ?>
效果很好。谢谢。
这对我有用!Chris 最初发布的代码出于某种原因对我不起作用。但这不知何故解决了问题,非常感谢!我已经尝试解决这个问题好几天了!
我还学到了一点:如果您的页面别名与您的自定义帖子类型名称相同,则它将不起作用。以防万一这对其他人有用!
再次感谢!
我正在使用自定义文章类型创建插件… Chris 的代码片段应该包含
global $wp_query;
$temp = $wp_query;
分页无法正常工作的原因有很多,这与 WordPress 设置其函数的方式有关。如果你没有使用循环,似乎很多函数都不会与自定义文章类型一起使用。
当我尝试使下一页帖子正常工作时,我的单页模板上的循环中没有这些函数。
我最终使用了这个
<?php // 这是当前的 CPT,可以使用 NAVI!!!
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array('posts_per_page' => 9,'post_type' => 'reviews', 'paged' => $paged );
$wp_query = new WP_Query($args);
if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) : $wp_query->the_post();
?>
这里的 html ////////////
<?php endwhile; endif; ?>
<?php if (function_exists('page_navi')) { // 如果实验性功能处于活动状态?>
<?php page_navi(); // 使用 page navi 函数?>
<?php } else { // 如果禁用了该功能,则显示常规的 WP 上一页和下一页链接?>
<nav class="wp-prev-next">
<div class="page-nav">
<div class="nav-previous"><?php next_posts_link('<< 下一页'); ?></div>
<div class="nav-next"><?php previous_posts_link('返回 >>'); ?></div>
</div>
</nav>
<?php } ?>
<?php
wp_reset_query();
?>
page_navi 函数是 320 Foundation 主题的一部分,可以省略,只保留“else”部分
有一种更简单的方法可以对自定义帖子页面进行分页,而不会影响主查询
<?php
$paged = ( get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1;
$args = array( ‘post_type’ => ‘newsfeed’, ‘posts_per_page’ => 5, ‘paged’ => $paged );
$newsquery = new WP_Query( $args );
if ( $newsquery->have_posts() )
while ( $newsquery->have_posts() ) : $newsquery->the_post();
the_excerpt(); // 这里的查询
global $newsquery; $total_pages = $newsquery->max_num_pages; if ( $total_pages > 1 ) {
$big = 999999999; // 需要一个不太可能的整数
echo paginate_links( array(
‘base’ => str_replace( $big, ‘%#%’, esc_url( get_pagenum_link( $big ) ) ),
‘format’ => ‘?paged=%#%’,
‘prev_text’ => __(‘ 上一页’),
‘next_text’ => __(‘下一页’),
‘current’ => max( 1, get_query_var(‘paged’) ),
‘total’ => $newsquery->max_num_pages
) );
}
endif; wp_reset_postdata();
?>
你好,Chris,首先,我真的是你的忠实粉丝,从 2012 年开始接触网络以来,我一直关注着你所有的更新。感谢你提供的精彩更新。
其次,请告诉我你是如何在你的博客中实现语法高亮的,我的意思是,是否有 WordPress/jQuery 插件或其他什么?我正在开发自己的博客,也需要实现语法高亮。
期待你的回复。
谢谢!
是否可以只返回特定自定义分类法中的帖子?我已经创建了一个 single-custom_post_type.php 模板,并使用常规的 WordPress 循环为单个(自定义)帖子创建我的分页,但当我尝试使用 `next_post_link()` 返回同一个分类法中的帖子时,我的分页消失了。你可以在这里阅读更多关于它的内容
http://wordpress.stackexchange.com/questions/110307/next-post-link-not-working-for-single-custom-post-type-post/110537
似乎在 `next_post_link('format', 'link', 'in_same_cat', 'excluded_categories')` 中将 `in_same_cat` 设置为 `true` 对于自定义分类法不起作用,但有没有办法让它生效?
感谢你的信息!
这对我来说并不完全有效(一直出现 404 错误等)。
我还发现一篇很棒的文章,展示了如何添加页码(而不仅仅是上一页/下一页)。
http://designphiliconline.blogspot.com.au/2012/08/wordpress-custom-post-type-pagination.html?showComment=1378003312469#c8786213242726004295
首先,感谢这篇文章!其次,我在我的 index.php 页面上让这段代码正常运行,但是,正如我上面提到的,第二页会在标题中生成“页面未找到”。有没有解决方法?
这在自定义帖子存档模板(例如 archive-artist.php)上有效吗?还是需要使用自定义页面模板(page-artists.php)?
非常感谢链接。谢谢,Mia
我的网站上有超过 1000 个代码片段,我知道它们都有效,因为我测试了所有代码片段。
我就在那里!像海绵一样吸收着所有知识 **欧比旺** :D
将你的 Pastebin – Github & WP Sites 添加到书签
( 你与 Chris Coyier 之间 - 到明年这个时候我就能成为一名火箭科学家了! :D )
感谢 **两位** - 从伟大的思想中学习总是荣幸 :)
嗨,大家好..
我在我的主页中使用这段代码,当我访问第二页(../page/2)时,它返回了 404 页面。
有人能帮忙吗?
我已经在各个地方寻找了好几天了,就是找不到对我有效的代码!
即使我能让它进行分页,它也显示的是相同的帖子,我已经尝试了所有我能找到的方法。
这段代码有效。谢谢!
你真是太棒了。你刚刚为我节省了更多的时间!
谢谢你 :)
谢谢你,Chris!语言无法形容你的强大!
这种方法存在一个问题。在我的场景中出现了这种情况
– 网站的博客部分最多显示每页 5 个帖子。
– 博客目前有 9 个帖子。
– 我的作品集最多显示每页 2 个帖子。
– 作品集目前有 8 个帖子。
因此,博客需要两页才能显示所有帖子,但作品集帖子类型需要 4 页。问题:没有第 3 页或第 4 页。也就是说,/portfolio/page/2/ 工作正常,但 /3/ 不存在。而且这也有道理;当 WP 访问 /3/ 时,它不知道该怎么办,因为正在进行的计算表明 /page/2/ 就足够了(如果它使用“阅读”设置下的“5”设置)。
要么是我在实现上出了问题(我欢迎解决方案...),要么这种方法存在严重缺陷。
我相信这是 @gbarchik 也遇到的问题。
谢谢你,伙计,你的代码工作正常。
不错的代码,完美运行。感谢你的帮助。
你必须使用变量 $wp_query!
啊!我一直不明白为什么帖子显示了,但 `next_posts_link()` 为空。我使用了一个名为 $post_query 的自定义变量,而不是 $wp_query。现在我知道了。这可能对其他人有帮助。
showposts
已经 很长时间 没有被使用。应该使用 `posts_per_page` 代替。你也可以使用 WordPress 的 `paginate_links` 函数将它改进为更漂亮的编号结构。 我在这里写了一篇关于它的完整教程。
如何按分类法筛选?
query(‘showposts=8&post_type=portolio&filter=free’.’&paged=’.$paged);
while ($wp_query->have_posts()) : $wp_query->the_post();
?>
上面的代码根本不起作用。请帮忙。
谢谢你,哥们,你用这段代码拯救了我的一天 :) …但我想要使用你提供的代码来进行数字分页。这可能吗?
祝你一切顺利,伙计 :D
非常有效。需要 `&paged=’.$paged` 部分来完成我的代码。
谢谢
当我点击“2”访问存档页面的第二页时,它跳转到 index.php 文件模板。你知道如何解决这个问题吗?
你解决这个问题了吗?
为了帮助其他人,我遇到了同样的问题,针对自定义帖子类型“新闻”。我不得不将我的新闻索引页面的 URL 从 /news 更改为 /latest-news 才能解决这个问题。
太棒了!对我来说有效!非常感谢!CSS Tricks 又做到了!
效果很好!谢谢!
感谢您的分享,它救了我!
太棒了!我一直在找这个!:)
谢谢您。
我将此代码用于 WordPress 自定义循环并进行分页
来源:http://web-profile.com.ua/wordpress/themes/wordpress-custom-loop/
谢谢!
尝试了很多其他代码后,只有您的代码对我有用。
您真是最棒的!非常感谢您!
谢谢,这对我有用 :)
谢谢,像魅力一样工作!:)
我看到过自定义查询帖子代码,但对于分页功能,我使用了来自 https://www.wpblog.com/use-wp_query-to-create-pagination/ 的此代码
`
function pagination($pages = ”, $range = 4)
{
$showitems = ($range * 2)+1;
}
`