【问题标题】: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 ... 这更有意义吗?

标签: php wordpress


【解决方案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');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-12
    • 2017-11-21
    相关资源
    最近更新 更多