首先;在过去的2-3周里,我到处寻找我遇到的问题的解决方案,但我所做的一切都无法使显示帖子网格的帖子的分页工作正常。我会在这篇文章中包括更多的链接(包括有问题的网站),但我只能发布2个URL。
(使用的主题是Divi,由优雅的主题…子主题使用)
So:
我已经创建了一个CPT,并且正在使用高级自定义字段(ACF)来启用一个简单的管理页面,以便用户输入详细信息(针对每个新帖子)。这将创建CPT的新职位。
使用此CPT创建的帖子将自动以网格格式列在“旅游博客”页面上。(…已删除网站URL…)
当选择浏览旅游博客页面中的帖子时,它会显示一个介绍页面[帖子],其中显示了所有博客帖子的网格,这些帖子的类别与该页面(旅游)相关,而不是CPT。这是我想要分页的页面,这些页面就是问题所在。
创建CPT和显示立柱网格的代码如下:http://pastebin.com/mM3XPUHM
这一页(在我读过的许多其他页面中)似乎是我能找到的最好的资源,但也许有什么我不明白的?How to fix pagination for custom loops?
Maybe some useful info
-显示要分页的帖子网格的页面是帖子,而不是页面(参考WP术语)
显示的立柱网格(分页不起作用)不属于CPT。它们按照相关类别显示-ACF变量
当鼠标指针悬停在“旧帖子”链接上时,url会显示并添加“/页/2/”,但单击时,会显示第一个初始页
如果测试,“max\\u num\\u pages”变量将返回一个大于1的数字,因此需要显示大量页面
我无法在地址栏中手动输入添加了/page/2/的URL。显示初始页面。
如果我为帖子网格输入一个固定类别(与ACF变量相反),除了在每页上显示一个相同类别的帖子网格外,没有任何区别
如果我在代码中输入“paged”的数字。例如,“$args[\'paged\']=3”将实际显示第三页
--在前面提到的测试中,“更新帖子”的链接仍然不会显示。仅显示“旧帖子”。
我意识到这可能是一篇相当长的帖子,可能还有一些重要的细节我没有提到,但希望有人能提出一些建议。
谢谢
Progress Edit:
在阅读
WP codex for pagination 它建议将permalinks设置为默认值,因此我将其设置为plain(我确实选择了“Post Name”),分页实际上可以工作。我更喜欢在永久链接中使用“Post name”,但希望这有助于查找错误。
最合适的回答,由SO网友:HeyBlondie 整理而成
这个问题终于为我解决了。简而言之,解决方案发布在此处:https://wordpress.org/support/topic/url-rewriting-on-custom-post-type/#post-7720726
。。。这是添加到函数中的最终代码。子主题中的php文件:
function fix_request_redirect( $request ) {
if ( isset( $request->query_vars[\'post_type\'] )
&& \'custom_type\' === $request->query_vars[\'post_type\']
&& true === $request->is_singular
&& - 1 == $request->current_post
&& true === $request->is_paged
) {
add_filter( \'redirect_canonical\', \'__return_false\' );
}
return $request;
}
add_action( \'parse_query\', \'fix_request_redirect\' );
…\'“custom\\u type”将替换为自定义帖子类型的实际标题。
感谢您为帮助bynicolas所做的努力
SO网友:bynicolas
我猜您将查询与分页逻辑混淆了。你是说如果get_query_var(\'paged\')
是false
收到get_query_var(\'page\')
但你是NOT 在静态首页上,然后else进入并设置$args[\'paged\'] = 1
所以基本上总是给你循环中的第一组帖子。
我会尝试以这种方式编写查询。
$paged = ( get_query_var(\'paged\') ) ? get_query_var(\'paged\') : 1; // If we have a \'paged\' parameter, set $paged to that value, if not set it to 1
$args = array(
\'post_type\' => \'post\',
\'posts_per_page\' => 6,
\'paged\' => $paged, // Our current paged parameter set above.
\'order\' => \'desc\',
\'orderby\' => \'date\',
\'tax_query\' => array(
array(
\'taxonomy\' => \'category\',
\'field\' => \'slug\',
\'terms\' => get_field(\'category_to_display\'), // category from the Advanced Custom Field variable
),
),
);
$the_query = new WP_Query( $args );
另外,我注意到你正在将下一篇文章设置为旧文章
next_posts_link( \'« Older Posts\' );
将以前的帖子转换为较新的帖子
previous_posts_link( \'Newer Posts »\' );
你不想反过来吗?但可能只有我没有正确地思考这个问题!