wordpress 3.8.1 категория страница 2 ошибка 404 не найден / пользовательский тип сообщения

сначала проблема, затем попытки.

проблема

Проблема в том, что я получаю ошибку 404 NOT FOUND, если я посещаю другую страницу, чем страница первой категории. На странице категории у меня есть обычная разбивка на страницы. Первый сайт работает. ( http://mypage.com/category/properties )

После того, как я нажму кнопку «Следующая страница», я нахожусь на странице http://mypage.com/category/properties/page/2 и получил ошибку 404 NOT FOUND.

Но почему?

Пытается

Сначала я пробовал этот вопрос. Пользовательский тип сообщения и таксономия pagination 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

Попробуйте изменить фильтр 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/

Попробуйте это, он должен работать. Схожая проблема

  <?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; ?> 

У меня была та же проблема с моими талисманами. Старая страница с сообщениями не была найдена с 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'); , 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.