Wordpress пользовательские категории типов сообщений - PullRequest
6 голосов
/ 10 февраля 2011

Эй.Я использую пользовательский тип сообщения в WordPress.Я регистрирую этот пользовательский тип сообщения следующим образом:

        register_post_type("lifestream", array(
            'label' => 'Lifestream',
            'public' => true,
            'hierarchical' => true,
            'menu_position' => 5,
            'supports' => array('title','editor','author','thumbnail','comments','custom-fields'),
            'taxonomies' => array('category','post_tag'),
            'query_var' => true,
            'publicly_queryable' => true,
            'exclude_from_search' => false,
            'caller_get_posts' => 1

        ));
        register_taxonomy_for_object_type('category', 'lifestream');
        register_taxonomy_for_object_type('post_tag', 'lifestream');

В теме (шаблон цикла) я люблю комбинировать сообщения и свой пользовательский тип сообщения, для этого я использую query_posts () со следующими параметрами:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
    'post_type' => array('post', 'lifestream'),
    'paged' => $paged,
    'cat' => $wp_query->get('cat'),
    'tag' => $wp_query->get('tag'),
    'year' => $wp_query->get('year'),
    'monthnum' => $wp_query->get('monthnum'),
    'post_status' => 'publish',
    'showposts' => 3
);
query_posts($args); 


# the loop     
while ( have_posts() ) : the_post(); 
# markup
endwhile;


if($wp_query->max_num_pages > 1): 
# next_posts_link / previous_posts_link
endif;

wp_reset_query();   

Пока это работает.Но у меня возникли проблемы с категориями и тегами страниц.Если я вызываю титульную страницу, все в порядке, и я могу разбивать страницы на страницы, получая правильные результаты.

И, если я вызываю страничный URL, например / category / mycat / page / 2, генерируется 404.Но обязательно должны быть посты.Неважно, есть ли в категории посты нестандартного типа или нормальные посты.Я предполагаю, что мои параметры для query_posts () не верны, но я не знаю ...

Кажется, что $ wp_query-> max_num_pages имеет неправильное значение.Но почему?Правильно ли я регистрирую таксономии (мне нравится использовать категории и теги для своих пользовательских типов сообщений)?

У вас есть идея, что делать?Большое спасибо!

Ответы [ 3 ]

2 голосов
/ 13 августа 2013

Я только что столкнулся с точно такой же проблемой и нигде не мог найти решение!В интернете полно ресурсов по теме, но ни один из них не дал правильного ответа на вопрос.

Вот правильный ответ для любого, кто ищет.Поместите приведенный ниже код в functions.php в корневой каталог вашей темы.

function init_category($request) {
    $vars = $request->query_vars;
    if (is_category() && !is_category('Blog') && !array_key_exists('post_type', $vars)) :
        $vars = array_merge(
            $vars,
            array('post_type' => 'any')
        );
        $request->query_vars = $vars;
    endif;
    return $request;
}
add_filter('pre_get_posts', 'init_category');

Все кредиты идут на Майк , который опубликовал это на Wordpress.com.Ура!

0 голосов
/ 13 октября 2011

В архиве .php попробуйте использовать следующее:

query_posts( array(
  'post_type' => 'lifestream',
  'posts_per_page' => 6,
  'orderby' => 'menu_order',
  'orderby' => 'date',
  'order' => 'ASC',
  'paged' => '' . get_query_var('paged')
));

if ( have_posts() ) : while ( have_posts() ) : the_post();

endwhile; else:
endif;

Для ссылок на следующую и предыдущую страницу я использую:

next_posts_link('Older Entries', $wp_query->max_num_pages);
previous_posts_link('Newer Entries', $wp_query->max_num_pages);
0 голосов
/ 10 февраля 2011

Убедитесь, что вы добавили это:

'paged' => get_query_var('paged')

на ваши $ args и он должен принять пейджинг в порядке.

Подробнее здесь

...