当我点击自定义帖子类型中的分页链接"工作"发布帖子列表(或输入像" 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>
是否存在误配置?它会在哪里?
提前感谢您的帮助!
答案 0 :(得分:14)
这听起来像是自定义帖子类型中的slug冲突。 尝试将post slug重命名为任何其他名称,然后再次转到永久链接以重新生成重写规则。