自定义帖子类型不接受页面变量
Posted
技术标签:
【中文标题】自定义帖子类型不接受页面变量【英文标题】:Custom Post Type Not Accepting Page Variable 【发布时间】:2014-05-21 15:29:40 【问题描述】:我使用 PODS 创建了一个自定义帖子类型 该 URL 最终为:
http://example.com/dj/dj-name
DJ 有一个作者字段,我用它来查询 DJ 的帖子。
next_posts_link() 的 url;最终变成 /dj/dj-name/page/2 正如人们所期望的那样。
点击链接后,wordpress 似乎忽略了 /page/2 而只是重定向回 /dj/dj-name
我的永久链接结构是:http://example.com/sample-post/
当我使用默认的永久链接结构 /?dj=dj-name&paged=2 时,它可以正常工作。
有什么想法吗?
【问题讨论】:
$paged
的值是多少?
@celeriko 它永远不会到达那一点,因为 wordpress 重定向回 /dj/dj-name
它确实到达了那个点,否则查询将不会执行并且页面上不会显示任何内容。
@celeriko 如果我在 /dj/dj-name 上,那就到此为止了...但是当我转到 /dj/dj-name/page/2 时,它并不是在显示来自 /dj/dj-name 的数据实际上是在将我重定向到 url /dj/dj-name ... 这更有意义吗?
【参考方案1】:
在您的 php 文件中,您是否将 $paged
分配给任何内容? View Pagination Codex
在您的查询上方,可能就在您的get_header()
下方,您需要添加如下内容:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
如果这不起作用,您可以尝试再次保存您的永久链接(设置 -> 永久链接 -> 保存永久链接)。这将刷新您当前的永久链接结构。
最后,如果您已经创建了一个名为“dj-name”的页面,您可能会遇到问题,因为 WordPress 无法区分名为 page/2/
的子页面和分页链接 page/2/
【讨论】:
是的,我确实把它放在了顶部。问题再次是 wordpress 把我送回 /dj/dj-name 好像 /dj/dj-name/page/2 是一个无效的 URL 如果你把<?php next_posts_link(); ?>
移到endif;
之前
正在生成正确的链接。当我查看源代码时单击它。点击后,wordpress 重定向我回到 /dj/dj-name。
您是否尝试在 endif 之前移动它?它可能正在生成正确的链接,但不是相应的查询,因为它是自定义的。
是的,结果还是一样。即使我在 URL 栏中键入正确的。它重定向回来。【参考方案2】:
分页仅适用于归档页面,例如 index.php、category.php、archive-posttype.php 等。
你可以让它在single.php或类似页面上工作,但你需要劫持内置的重定向功能,见下文...
function dj_redirect_hack($url)
if ( is_single() and get_post_type() == 'dj' ) $url = false;
return $url;
add_filter('redirect_canonical','dj_redirect_hack');
【讨论】:
以上是关于自定义帖子类型不接受页面变量的主要内容,如果未能解决你的问题,请参考以下文章
自定义帖子类型等效于 Wordpress 中的“帖子页面”设置