WordPress自定义帖子类型分页链接返回404

时间:2014-04-07 18:20:00

标签: php wordpress pagination http-status-code-404 custom-post-type

当我点击自定义帖子类型中的分页链接"工作"发布帖子列表(或输入像" mysite.com/works/page/2"这样的网址),我得到404页面。

常规帖子类型分页(博客)正常工作。另外,关于我的自定义帖子类型的所有其他内容"工作"似乎工作正常。

我的template-works.php文件包含:

  

get_home_pagination();

     

$ args = array(' post_type' =>'工作',' posts_per_page' => 10,'分页'   => $ 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;

     

其他:_e('此处没有。'); ENDIF;

在template-blog.php中使用相同的代码(当然替换post-type),其中分页链接可以正常工作。

然后在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",则博客模板会加载消息"此处没有"。没有404错误页面。

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

为什么?

修改

在404页面上,我也收到了这个错误:

  

尝试获取非对象的属性   第29行(...)/wordpress/wp-includes/post-template.php。

...但它可能与分页问题无关。我设法删除导致此错误的代码(来自我自定义的插件),并且分页仍然无法正常工作。

修改

这是我使用Debug-this插件调试URL mysite.com/trabalhos/pagina/2 所得到的。这似乎是非常错误的:

Obs:trabalhos = works,pagina = page

  

匹配规则:trabalhos /([^ /] +)(/ [0-9] +)?/?$

     

匹配查询:works = pagina& page =%2F2

     

查询字符串:   页=%2F2&安培;名称= pagina&安培; post_type =工作&安培;作品= pagina&安培;调试这个=重写

根据我的理解,网址 mysite.com/trabalhos/pagina/2 应该指向以下网址(除非它不起作用 - 但如果我更换' trabalhos& #39;使用' noticias' - 我的博客'博客' - 它有效):

  

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

但是,网址 mysite.com/trabalhos/pagina/2 指向这个奇怪的网址:

  

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

令人惊讶的是,以下网址完全指向我期待的内容,即作品第2页(trabalhos):

  

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

我似乎接近解决方案......但是我尝试停用所有插件,删除几乎所有主题php代码,每次重置管理面板中的永久链接设置等等,并且错误仍然存​​在。< / p>

是否存在误配置?它会在哪里?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:14)

这听起来像是自定义帖子类型中的slug冲突。 尝试将post slug重命名为任何其他名称,然后再次转到永久链接以重新生成重写规则。