Пользовательские типы сообщений, не отображаемые на странице архива пользовательской таксономии

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

Вот моя таксономия «компании»:

function create_company_taxonomy() { $labels = array( 'name' => _x( 'Companies', 'taxonomy general name' ), 'singular_name' => _x( 'Company', 'taxonomy singular name' ), 'search_items' => __( 'Search Companies' ), 'all_items' => __( 'All Companies' ), 'parent_item' => __( 'Parent Company' ), 'parent_item_colon' => __( 'Parent Company:' ), 'edit_item' => __( 'Edit Companies' ), 'update_item' => __( 'Update Companies' ), 'add_new_item' => __( 'Add New Company' ), 'new_item_name' => __( 'New Company Name' ), 'menu_name' => __( 'Company' ), ); $args = array( 'labels' => $labels, 'show_ui' => true, 'show_admin_column' => true, 'query_var' => true, 'rewrite' => array( 'slug' => 'company' ), 'public' => true, 'hierarchical' => true, 'show_ui' => true, 'show_in_nav_menus' => true, 'query_var' => true, 'publicly_queryable' => true, 'capability_type' => 'post', 'hierarchical' => true, 'has_archive' => true ); register_taxonomy( 'company', array( 'brochures','business-cards','post','websites' ), $args ); } add_action( 'init', 'create_company_taxonomy', 0 ); 

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

Когда я создаю шаблон taxonomy-company.php (на основе archive.php) и даю каждому из этих post_types термин из таксономии, на странице отображаются только сообщения. Я не могу отображать типы пользовательских сообщений вообще.

Нужен ли мне специальный запрос? Любое понимание было бы оценено.

EDIT: Вот один из моих register_post_types, а также

 add_action( 'init', 'create_custom_post_types' ); function create_custom_post_types() { $labels = array( 'name' => __( 'Websites' ), 'singular_name' => __( 'Website' ) ); $args = array( 'labels' => $labels, 'public' => true, 'has_archive' => true, 'rewrite' => array('slug' => 'websites'), 'taxonomies' => array( 'category','company','post_tag' ), 'supports' => array( 'title', 'editor', 'thumbnail' , 'custom-fields', 'excerpt' ), 'exclude_from_search' => true ); register_post_type( 'websites', $args); } 

Solutions Collecting From Web of "Пользовательские типы сообщений, не отображаемые на странице архива пользовательской таксономии"

По умолчанию все типы публичных сообщений включены в основной основной запрос на страницах таксономии. Если вы посмотрите на общедоступный параметр register_post_type()'s когда установлено значение true

  • 'правда'

  • Implies exclude_from_search : false, show_in_nav_menus : true, show_ui : true и show_ui : true.

Когда вы регистрируете свой тип сообщения, вы устанавливаете exclude_from_search в true . Это не только удаляет пользовательский тип сообщения из поиска, но также и из основного запроса на странице таксономии. Опять же, из кода для параметра exclude_from_search

Примечание. Если вы хотите показать список сообщений, которые связаны с терминами таксономии, вы должны установить exclude_from_search как false (например: для вызова site_domaine/?taxonomy_slug=term_slug или site_domaine/taxonomy_slug/term_slug ). Если вы установите значение true, на странице таксономии (например: taxonomy.php ) WordPress не найдет ваши сообщения и / или разбиение на страницы сделает ошибку 404.

РЕШЕНИЕ

Вам нужно установить exclude_from_search в false, reflush your permalinks и ваш товар. Если вам нужно исключить тип публикации на странице поиска, вы можете использовать pre_get_posts для удаления типа сообщения из основного запроса

РЕДАКТИРОВАТЬ

Для интереса, вот фрагмент кода в классе WP_Query ( в wp-includes / query.php ), который отвечает за включение и исключение типов сообщений из основного запроса на страницах архива терминов таксономии

 if ( $this->is_tax ) { if ( empty($post_type) ) { // Do a fully inclusive search for currently registered post types of queried taxonomies $post_type = array(); $taxonomies = array_keys( $this->tax_query->queried_terms ); foreach ( get_post_types( array( 'exclude_from_search' => false ) ) as $pt ) { $object_taxonomies = $pt === 'attachment' ? get_taxonomies_for_attachments() : get_object_taxonomies( $pt ); if ( array_intersect( $taxonomies, $object_taxonomies ) ) $post_type[] = $pt; } if ( ! $post_type ) $post_type = 'any'; elseif ( count( $post_type ) == 1 ) $post_type = $post_type[0]; $post_status_join = true; } elseif ( in_array('attachment', (array) $post_type) ) { $post_status_join = true; } } 

Важная часть здесь: get_post_types( array( 'exclude_from_search' => false ) . Именно здесь запрос получает все типы публичных сообщений, где exclude_from_search имеет значение false . Все типы сообщений, для которых с exclude_from_search установлено значение true будут исключены из запрос, и поэтому ваши пользовательские типы сообщений не включаются в страницу архива термина таксономии