6

当我点击我的自定义文章中的分页链接类型“作品”的文章列表(或输入一个URL,如“mysite.com/works/page/2”),我得到404页。WordPress自定义文章类型分页链接返回404

普通帖子类型分页(博客)工作正常。另外,关于我的自定义帖子类型“作品”的一切似乎都很好。

我的模板works.php文件中有这样的:

get_home_pagination();

$args = array('post_type' => 'works', 'posts_per_page' => 10, 'paged' => $paged); $wp_query = new WP_Query($args);

if ($wp_query->have_posts()) :

while ($wp_query->have_posts()) : $wp_query->the_post(); get_template_part('loop', 'works'); endwhile;

else : _e('Nothing here.'); endif;

相同的代码(替换型后,当然)在模板blog.php的,其中分页链接正常工作时使用。

然后在functions.php中我有:

function get_home_pagination() {

global $paged, $wp_query, $wp; $args = wp_parse_args($wp->matched_query);

if (!empty ($args['paged']) && 0 == $paged) {

$wp_query->set('paged', $args['paged']); 
    $paged = $args['paged']; 

} }

有那么一刻我以为那是在发生,因为WordPress无法找到回路中的任何讯息:它试图在获得那个职位ID没有帖子,如post-template.php的第29行。但后来我意识到这一点:

如果我输入,例如,URL“(...)/ blog/page/456”,博客模板加载消息“Nothing here”。没有404错误页面。

另一方面,URL“works/page/2”,我希望返回一些帖子,结束于404错误页面。

为什么?

编辑:

在404页我也收到此错误:

Trying to get property of non-object in (…)/wordpress/wp-includes/post-template.php on the line 29.

...但它可能不会涉及到分页问题。我设法删除导致此错误的代码(来自我自定义的插件),而分页仍然无效。

编辑:

这是我得到的调试URL mysite.com/trabalhos/pagina/2与调试,该插件。这似乎是非常错误的:

观测数据:trabalhos =作品,pagina =页

Matched Rule: trabalhos/([^/]+)(/[0-9]+)?/?$

Matched Query: works=pagina&page=%2F2

Query String: page=%2F2&name=pagina&post_type=works&works=pagina&debug-this=rewrites

在我的理解中,URL mysite.com/trabalhos/pagina/2应指向以下网址(除非它不工作 - 但如果我取代“消息报”“trabalhos” - 我塞了“博客” - 它的工作原理):

mysite.com/trabalhos/pagina/2/?pagename=trabalhos

然而,URL mysite的。COM/trabalhos/pagina/2点这个奇怪的网址:

mysite.com/trabalhos/pagina/2?page=%2F2&works=pagina&post_type=works&name=pagina

令人奇怪的是,下面的URL指向正好到我期待的内容,也就是作品的第2页(trabalhos):

mysite.com/noticias/pagina/2/?pagename=trabalhos

我似乎接近解决方案...但我试图停用所有插件,删除几乎所有主题的PHP代码,每次重置管理面板中的固定链接设置等等,并且错误仍然存​​在。

它是否有一些配置错误?它会在哪里?

在此先感谢您的帮助!

+1

再次保存永久链接按钮,可以解决这个问题 –

+1

看看我的答案http://stackoverflow.com/questions/22364294/pagination-on-custom-wp-query-in-wordpress-takes-to-404 -Error-page/22465969#22465969 –

+0

我用一个插件来调试查询和重写。匹配的查询和作品分页链接的查询字符串显然是混乱的,匹配的规则看起来是错误的。我已经有相当长的一段时间了,无法弄清楚。这是很多信息放置在评论中。我可以编辑我的帖子,但猜测我可能会更好地开始一个新的线程... – zok

回答

13

这听起来像您的自定义帖子类型中的slu conflict冲突。 尝试重新命名为其他任何名称后,并再次进入永久链接重新生成重写规则。

+1

原来,这确实是CPT /页面slu conflict冲突。我在我的自定义帖子类型'rewrite'属性和页面上使用了相同的slu slu,该页面列出了来自该自定义帖子类型的所有帖子,显然这完全搞砸了WordPress查询字符串。 – zok

+1

这篇文章也给了我关于这个问题的很好的见解:http://code.tutsplus.com/tutorials/custom-post-type-pagination-chaining-method--wp-21444 – zok

+1

感谢上帝我发现了这个,我会'如果我没有读过这个,我从未发现过! – Noob17

相关问题