Пользовательские типы записей WordPress: как показывать в архивах тегов (tag. php) - PullRequest
0 голосов
/ 26 февраля 2020

Я допускаю теги для своих пользовательских типов сообщений, таких как:

'taxonomies' => array('post_tag'),

Мой тег. php выглядит следующим образом:

<h1><?php single_cat_title(''); ?></h1>

<?php while( have_posts() ): the_post(); ?>

<h3><?php the_title(); ?></h3>

<?php endwhile; ?>

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

Я попытался добавить найденную здесь функцию: https://wordpress.stackexchange.com/questions/203239/tag-php-not-displaying-posts-with-the-tag/203241

Но единственный эффект, который это имеет, теперь в архиве нет сообщений.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Я решил эту проблему, отредактировав функцию, связанную в моем вопросе с этим:

function tag_filter($query) {
  if ( !is_admin() ) {
    if ($query->is_tag) {
      $query->set('post_type', array( 'custom_post_type', ));
    }
  }
}
add_action('pre_get_posts','tag_filter');

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

0 голосов
/ 26 февраля 2020

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

"product_cat" - это идентификатор вашей настраиваемой таксономии (т. Е. Использовать ее в WP_Query) и "array ('products') - это идентификатор типа записи.


register_taxonomy('product_cat', array('products'), array(
            'hierarchical' => false, // Notice that this one is set to "false".
            'label' => 'Categorias de Produtos', // Sets the name in WordPress backoffice
            'singular_label' => 'Categoria do Produto',
            'rewrite' => array('slug' => 'categoria-producto', 'with_front' => false), // Defines it's URL.
        )
    );

    register_taxonomy_for_object_type('product_cat', 'products');

Это создаст тег-таксономию для вашего пользовательского типа записи

Вам также нужно изменить эту строку

"taxonomies" => array("product_cat"),

К идентификатору вашей пользовательской таксономии, иначе он не будет отображаться.

Редактировать: Из любопытства, установив значение "иерархический" для "true", вы создадите категорию -подобная таксономия.

...