首先是问题, 然后是尝试。
问题
【wordpress 3.8.1类别页面2错误404未找到/自定义帖子类型】问题是, 如果我访问除第一类页面之外的其他页面, 则会收到404 NOT FOUND错误。在类别页面上, 我有正常的分页。第一个站点起作用。 (http://mypage.com/category/properties)
单击”
下一页”
按钮后, 我进入页面http://mypage.com/category/properties/page/2, 并收到错误404 NOT FOUND。
但为什么?
尝试
首先, 我尝试了这个”
问题自定义帖子类型和分类法”
分页404错误, 但是exclude_from_search和以下查询不起作用。
我也尝试过http://wordpress.org/support/topic/one-again-page-not-found-on-second-and-further-pages但是query_posts尝试的结果与WP_Query尝试的结果相同。
我也尝试过带有预查询的事件。但是问题是一样的-.-
范例/ PHP
<
?php/* /srv/www/mypage/wp-content/themes/twentythirteen/category-1.php */global $wp_query;
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array_merge($wp_query->
query, array(
'posts_per_page' =>
4, 'post_type' =>
'property', 'post_status' =>
'publish', 'meta_key' =>
'property_typ', 'meta_value' =>
'Rent', 'category_name' =>
null
));
$wp_query = new WP_Query($args);
echo '<
ul>
';
while (have_posts())
{
the_post();
echo '<
li>
<
a href="' . get_permalink(get_the_id()) . '">
'
. get_the_title() . '<
/a>
<
/li>
';
}
echo '<
/ul>
';
echo paginate_links(array(
'base' =>
str_replace(99999, '%#%', esc_url(get_pagenum_link(99999))), 'total' =>
$wp_query->
max_num_pages, 'format' =>
'?paged=%#%', 'current' =>
max(1, get_query_var('paged'))
));
结果 第1页
文章图片
第2页
文章图片
#1 尝试更改pre_get_posts过滤器。
function namespace_add_custom_types( $query ) {
if( is_category() || is_tag() &
&
empty( $query->
query_vars['suppress_filters'] ) ) {
$query->
set( 'post_type', array(
'post', 'property'
));
return $query;
}
}
add_filter( 'pre_get_posts', 'namespace_add_custom_types' );
在http://css-tricks.com/snippets/wordpress/make-archives-php-include-custom-post-types/
#2 试试这个, 它应该起作用。有类似的问题
<
?php
// Display pagination
global $wp_query;
$pagination_args = array(
'base' =>
'%_%', 'format' =>
'?' . $query_string . '&
paged=%#%', 'current' =>
max(1, get_query_var('paged')), 'total' =>
$wp_query->
max_num_pages, 'type' =>
'array'
);
$pagination = paginate_links($pagination_args);
$big = 999999999;
// need an unlikely integer$links .= paginate_links(array(
'base' =>
str_replace($big, '%#%', esc_url(get_pagenum_link($big))), 'format' =>
'?' . $query_string . '&
paged=%#%&
keyword='.$keyword, 'current' =>
max(1, get_query_var('paged')), 'total' =>
$wp_query->
max_num_pages
));
echo $links;
?>
#3 我的自定义分类后分页方法存在相同的问题。较旧的帖子页面即将出现404页面。此问题与WP分类标准相关, 因此你必须为自定义帖子类型分类法重写规则, 如下所示:
function generate_taxonomy_rewrite_rules( $wp_rewrite ) {$rules = array();
$post_types = get_post_types( array( 'public' =>
true, '_builtin' =>
false ), 'objects' );
$taxonomies = get_taxonomies( array( 'public' =>
true, '_builtin' =>
false ), 'objects' );
foreach ( $post_types as $post_type ) {
$post_type_name = $post_type->
name;
$post_type_slug = $post_type->
rewrite['slug'];
foreach ( $taxonomies as $taxonomy ) {
if ( $taxonomy->
object_type[0] == $post_type_name ) {
$terms = get_categories( array( 'type' =>
$post_type_name, 'taxonomy' =>
$taxonomy->
name, 'hide_empty' =>
0 ) );
foreach ( $terms as $term ) {
$rules[$post_type_slug . '/' . $term->
slug . '/?$'] = 'index.php?' . $term->
taxonomy . '=' . $term->
slug;
$rules[$post_type_slug . '/' . $term->
slug . '/page/?([0-9]{1, })/?$'] = 'index.php?' . $term->
taxonomy . '=' . $term->
slug . '&
paged=' . $wp_rewrite->
preg_index( 1 );
}
}
}
}$wp_rewrite->
rules = $rules + $wp_rewrite->
rules;
}add_action('generate_rewrite_rules', 'generate_taxonomy_rewrite_rules');
这应该适用于所有自定义帖子类型分类法, 并且仅使用默认查询循环而不传递任何参数。页面将基于General-> Reading生成。
推荐阅读
- wordpress add_action(‘save_post’,’my_function)不起作用
- WordPress(从小部件代码访问数据库)
- WooCommerce产品图片悬停
- MacBook安装wget几种方式
- 首届LoongArch生态创新大会成功召开,筑巢引凤共建信息产业命运共同体
- CentOS防火墙查看关闭和禁止启动
- Nginx+Tomcat的负载均衡与动静分离集群
- logstash安装
- #yyds干活盘点# git实用基础教程(分布式版本管理)