2015-07-13 2 views
0

У меня есть пользовательский тип записи и таксономия портфеля, созданная, как это:Листинг сообщения из категории персонализированного сообщения?

$args = array(
     'label' => __('Portfolio', 'my-portfolio'), 
     'labels' => array(
      'add_new_item' => __('New portfolio', 'my-portfolio'), 
      'new_item' => __('New portfolio', 'my-portfolio'), 
      'not_found' => __('No portfolio items', 'my-portfolio'), 
     ), 
     'singular_label' => __('Portfolio', 'my-portfolio'), 
     'menu_icon' => 'dashicons-portfolio', 
     'public' => true, 
     'show_ui' => true, 
     'capability_type' => 'post', 
     'hierarchical' => true, 
     'has_archive' => true, 
     'exclude_from_search' => true, 
     'show_in_nav_menus' => false, 
     'supports' => array('title', 'editor', 'thumbnail'), 
     'rewrite' => array('slug' => 'portfolio', 'with_front' => false), 
     'register_meta_box_cb' => 'add_remove_metaboxes_portfolio', 
     ); 

    //Register type and custom taxonomy for type. 
    register_post_type('portfolio' , $args); 
    register_taxonomy("portfolio-category", array("portfolio"), array("hierarchical" => true, "label" => "Categories", "singular_label" => "Category", "rewrite" => true, "slug" => 'portfolio-category',"show_in_nav_menus"=>false)); 

Это работает, как и должно быть, когда я использую его в своих запросах. И он отображается в меню в бэкэнде, а также в категориях этого настраиваемого типа сообщений.

Моя проблема в том, что я пытаюсь восстановить все сообщения из определенной категории (нажав на название категории) Я получаю No posts were found. Sorry! на своей странице.

Страница представляет собой архив Wordpress по умолчанию, в котором должны быть перечислены все сообщения, но ничего не отображается. URL выглядит так:

http://xampp/my-theme/?portfolio-category=animals

Но даже если я использую имя-пост пермалинки ничего не работает.

Я прочитал на CSS Tricks, что я мог бы использовать эту функцию в functions.php

function namespace_add_custom_types($query) { 
    if(is_category() || is_tag() && empty($query->query_vars['suppress_filters'])) { 
    $query->set('post_type', array(
    'post', 'portfolio', 'nav_menu_item' 
     )); 
     return $query; 
    } 
} 
add_filter('pre_get_posts', 'namespace_add_custom_types'); 

Но это не помогает. Что мне здесь не хватает?

+0

Установить иерархическое значение false в вашем cpt, если не собираетесь использовать отношения родитель-потомок. –

+0

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

ответ

0

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

$args = array(
     'label' => __('Portfolio', 'my-portfolio'), 
     'labels' => array(
      'add_new_item' => __('New portfolio', 'my-portfolio'), 
      'new_item' => __('New portfolio', 'my-portfolio'), 
      'not_found' => __('No portfolio items', 'my-portfolio'), 
     ), 
     'singular_label' => __('Portfolio', 'my-portfolio'), 
     'menu_icon' => 'dashicons-portfolio', 
     'public' => true, 
     'show_ui' => true, 
     'capability_type' => 'post', 
     'hierarchical' => true, 
     'has_archive' => true, 
     'exclude_from_search' => true, 
     'show_in_nav_menus' => false, 
     'supports' => array('title', 'editor', 'thumbnail'), 
     'rewrite' => array('slug' => 'portfolio', 'with_front' => false), 
     'register_meta_box_cb' => 'add_remove_metaboxes_portfolio', 
     ); 

    //Register type and custom taxonomy for type. 
    register_post_type('portfolio' , $args); 
flush_rewrite_rules(); 
+0

Не используйте 'flush_rewrite_rules()' так, как вы это сделали. Itnis чрезвычайно дорого работать и трудно на ресурсы. Он замедляет загрузку страниц с большого количества –

+0

без flush_rewrite_rules, как можно вызвать шаблоны страниц? –

+0

Сделайте это один раз и удалите его. В кодексе перечислены крючки, в которых он должен использоваться –

Смежные вопросы