2015-04-06 18 views
2

В категориях по умолчанию сообщения по умолчанию показаны из определенной категории с разбивкой по страницам, а «категория» удаляется в url из настроек постоянных ссылок.Wordpress category.php page pagination показывает 404 страница

К сожалению, он переадресовывается на страницу 404 при разбиении на страницы на вторую страницу.

Я даже попытался проверить категорию разбиения на страницы в теме Wordpress по умолчанию 2015, в которой она тоже не работает.

Вот мой category.php только с цепочкой wordpress для тестирования.

if (have_posts()) : 
    while (have_posts()) : the_post(); 
     the_title(); 
    endwhile; 
endif; 

next_posts_link('Older posts'); 
previous_posts_link('Newer posts'); 

Примечание: все работает хорошо, если категория не удалена из URL-адреса.

http://www.domain.com/category/my_category/page/2 (works) 
http://www.domain.com/my_category/page/2 (doesnt work) 

Нужно ли мне добавить/изменить что-нибудь, чтобы заставить его работать?

+0

Этого плагина поможет: https://wordpress.org/plugins/remove-category-url/ –

+0

http://stackoverflow.com/questions/17798815/remove -category-таг основанием из-Wordpress-url-без-а-плагин – atinder

ответ

2

Это нормально, пожалуйста, попробуйте использовать код ниже:

add_filter('category_rewrite_rules', 'vipx_filter_category_rewrite_rules'); 
function vipx_filter_category_rewrite_rules($rules) { 
    $categories = get_categories(array('hide_empty' => false)); 

    if (is_array($categories) && ! empty($categories)) { 
     $slugs = array(); 
     foreach ($categories as $category) { 
      if (is_object($category) && ! is_wp_error($category)) { 
       if (0 == $category->category_parent) { 
        $slugs[] = $category->slug; 
       } else { 
        $slugs[] = trim(get_category_parents($category->term_id, false, '/', true), '/'); 
       } 
      } 
     } 

     if (! empty($slugs)) { 
      $rules = array(); 

      foreach ($slugs as $slug) { 
       $rules[ '(' . $slug . ')/feed/(feed|rdf|rss|rss2|atom)?/?$' ] = 'index.php?category_name=$matches[1]&feed=$matches[2]'; 
       $rules[ '(' . $slug . ')/(feed|rdf|rss|rss2|atom)/?$' ] = 'index.php?category_name=$matches[1]&feed=$matches[2]'; 
       $rules[ '(' . $slug . ')(/page/(\d+)/?)?$' ] = 'index.php?category_name=$matches[1]&paged=$matches[3]'; 
      } 
     } 
    } 
    return $rules; 
} 

ВАЖНО EDIT: Был ошибка в нумерации страниц, страницы 10+ не работали должным образом.
Теперь исправлено: (\d)+ изменено на (\d+).

Надеется, что это будет полезно :)