WP нестандартные типы постов / ошибка 404 - PullRequest
1 голос
/ 03 февраля 2012

Я использую пользовательский тип записей в WordPress (называемый "ns_news_article", сгенерированный из магических полей), которые зарегистрированы и работают.Это переписывает URL, чтобы добавить «категорию / новости» после домена (так: www.mydomain.com/category/news/custom-post-1).У меня там должны быть «поддельные каталоги».

У меня есть это в functions.php:

add_rewrite_rule("[ns_news_article]" . '$', "index.php?pagename=[ns_news_article]", "top");
add_rewrite_rule("[ns_news_article]" . '/page/([0-9])*/?', "index.php?pagename=[ns_news_article]" . '&paged=$matches[1]', "top"); 
global $wp_rewrite;
$wp_rewrite->flush_rules();

2-я строка решает проблему разбивки на страницы 404 при просмотре нескольких страниц списков, но затем выдает 404 ошибки при попытке просмотраединственный пост.Если я избавлюсь от этого, вы можете просматривать сообщения, но нумерация страниц не работает.

Можно ли это исправить или это нужно сделать другим способом?

1 Ответ

0 голосов
/ 03 февраля 2012

Я недавно сделал нумерацию пользовательских типов постов, вот как я это сделал. Допустим, ваш пользовательский тип записи называется «customp».

  1. Создайте файл в своей теме с именем page-customp.php. Затем опубликуйте пустую страницу с заголовком «Customp». Теперь, когда вы посещаете www.yourdomain.com/customp, вы увидите страницу, которая использует page-customp.php в качестве шаблона. Теперь мы будем использовать эту страницу для показа пользовательских сообщений и с нумерацией страниц.

  2. Поместите этот код в your page-customp.php файл:

    $paged = 1;
    
    $postsPerPage = 5;
    
     if ( get_query_var('paged') ) $paged = get_query_var('paged');
    
     if ( get_query_var('page') )  $paged = get_query_var('page');
    
     query_posts( '&post_type=customp&paged=' . $paged . '&posts_per_page='.$postsPerPage );
    
    while ( have_posts() ) : the_post();
    
      the_title();
      echo get_the_excerpt();
    
    endwhile;
    
    customp_paginate();
    
  3. В вашем functions.php файле поместите это:

    function customp_paginate() {
    
      global $wp_query, $wp_rewrite;
    
      $wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1;
    
      $pagination = array(
        'base' => @add_query_arg('page', '%#%'),
        'format' => '',
        'total' => $wp_query->max_num_pages,
        'current' => $current,
        'show_all' => true,
        'type' => 'list',
        'prev_text' => '«',
        'next_text' => '»',
      );
    
      if ($wp_rewrite->using_permalinks())
        $pagination['base'] = user_trailingslashit(trailingslashit(remove_query_arg('s', get_pagenum_link(1))) . 'page/%#%/', 'paged');
    
      if (!empty($wp_query) && $pagination['total'] != 1) {
        $pagination['add_args'] = array('s' => get_query_var('s'));
    
        echo "<div class='paginate'><strong>Pages:</strong>" . paginate_links($pagination) . "</div>";
      }
    
    }
    

Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...