个性化阅读
专注于IT技术分析

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页

第1页

第2页

第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生成。

赞(0)
未经允许不得转载:srcmini » wordpress 3.8.1类别页面2错误404未找到/自定义帖子类型

评论 抢沙发

评论前必须登录!