@user_tm

Как правильно выводить произвольные рубрики произвольного типа записи?

Здравствуйте! Создал произвольный тип записи "мероприятие" register_post_type('affairs', array..., также создал таксономию "меры" (это как рубрики у стандартного типа записи) register_taxonomy( 'action', [ 'affairs' ]..., и термы: (или как их правильно называть?) Благотворительность (ярлык: offering), прочие (ярлык: etc). Вот вопросы как с помощью get_posts() вывести на главной странице 4(четыре) поста относящиеся к "Благотворительность (ярлык: offering)" и отдельно с помощью той же функции get_posts() относящиеся к "прочие (ярлык: etc)", а так же аналогичный вопрос, только вывести нужно не на главной странице а отдельно все посты относящиеся к "Благотворительность (ярлык: offering)" и отдельно все посты относящиеся к "прочие (ярлык: etc)"?5e1d821dee6f3324982321.jpeg
вот код вывода четырех постов на главной странице с помощью функции get_posts()
<?php $posts = get_posts( array(
        'numberposts' => 4,
        'category'    => 'offering',
        'post_type'   => 'affairs',
        //'suppress_filters' => true, // подавление работы фильтров изменения SQL запроса
      ) );

      foreach( $posts as $post ){
        setup_postdata($post);
    ?>
                
          
          <article class="stock">
            <h2 class="stock-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
            <!-- /.stock-title -->
            <div class="stock-indicator">
              <p class="stock-indicator_text">активна</p>
              <!-- /.indicator-text -->
            </div>
            <!-- /.indicator -->
          </article>
          <!-- /.stock -->
        
        <?php
        }

        wp_reset_postdata(); // сброс
      ?>
но почему то выводятся как "благотворительность " так и "прочие", а хотелось бы только первое.
вот код регистрации поста и таксономии
// хук для регистрации произвольного поста
add_action( 'init', 'register_post_types' );
function register_post_types(){
	register_post_type('affairs', array(
		'label'  => null,
		'labels' => array(
			'name'               => 'Мероприятие', // основное название для типа записи
			'singular_name'      => 'Мероприятие', // название для одной записи этого типа
			'add_new'            => 'Добавить мероприятие', // для добавления новой записи
			'add_new_item'       => 'Добавление мероприятии', // заголовка у вновь создаваемой записи в админ-панели.
			'edit_item'          => 'Редактирование мероприятии', // для редактирования типа записи
			'new_item'           => 'Новое мероприятие', // текст новой записи
			'view_item'          => 'Смотреть мероприятие', // для просмотра записи этого типа.
			'search_items'       => 'Искать мероприятие', // для поиска по этим типам записи
			'not_found'          => 'Не найдено', // если в результате поиска ничего не было найдено
			'not_found_in_trash' => 'Не найдено в корзине', // если не было найдено в корзине
			'parent_item_colon'  => '', // для родителей (у древовидных типов)
			'menu_name'          => 'Мероприятие', // название меню
		),
		'description'         => 'Благотворительные акции, событии, праздники, уагызы, соревнование, викторины',
		'public'              => true,
		'publicly_queryable'  => true, // зависит от public
		'exclude_from_search' => true, // зависит от public
		'show_ui'             => true, // зависит от public
		'show_in_nav_menus'   => true, // зависит от public
		'show_in_menu'        => true, // показывать ли в меню адмнки
		'show_in_admin_bar'   => true, // зависит от show_in_menu
		'show_in_rest'        => true, // добавить в REST API. C WP 4.7
		'rest_base'           => null, // $post_type. C WP 4.7
		'menu_position'       => 4,
		'menu_icon'           => 'dashicons-megaphone', 
		//'capability_type'   => 'post',
		//'capabilities'      => 'post', // массив дополнительных прав для этого типа записи
		//'map_meta_cap'      => null, // Ставим true чтобы включить дефолтный обработчик специальных прав
		'hierarchical'        => false,
		'supports'            => [ 'title', 'editor' ], // 'title','editor','author','thumbnail','excerpt','trackbacks','custom-fields','comments','revisions','page-attributes','post-formats'
		'taxonomies'          => ['action'],
		'has_archive'         => true,
		'rewrite'             => true,
		'query_var'           => true,
	) );
}


// хук для регистрации ТАКСАНОМИИ 
add_action( 'init', 'create_taxonomy' );
function create_taxonomy(){

	// список параметров: wp-kama.ru/function/get_taxonomy_labels
	register_taxonomy( 'action', [ 'affairs' ], [ 
		'label'                 => '', // определяется параметром $labels->name
		'labels'                => [
			'name'              => 'Меры',
			'singular_name'     => 'Мера',
			'search_items'      => 'Искать меру',
			'all_items'         => 'Все меры',
			'view_item '        => 'Посмотреть меру',
			'parent_item'       => 'Родительская мера',
			'parent_item_colon' => 'Родительская мера:',
			'edit_item'         => 'Изминить меру',
			'update_item'       => 'Обновить меру',
			'add_new_item'      => 'Добавить новую меру',
			'new_item_name'     => 'Название новоой меры',
			'menu_name'         => 'Меры',
		],
		'description'           => 'все что косается мероприятии проводимые мечетью', // описание таксономии
		'public'                => true,
		'publicly_queryable'    => true, // равен аргументу public
		'show_in_nav_menus'     => true, // равен аргументу public
		'show_ui'               => true, // равен аргументу public
		'show_in_menu'          => true, // равен аргументу show_ui
		'show_tagcloud'         => true, // равен аргументу show_ui
		'show_in_quick_edit'    => true, // равен аргументу show_ui
		'hierarchical'          => true,

		'rewrite'               => true,
		//'query_var'             => $taxonomy, // название параметра запроса
		'capabilities'          => array(),
		'meta_box_cb'           => true, // html метабокса. callback: `post_categories_meta_box` или `post_tags_meta_box`. false — метабокс отключен.
		'show_admin_column'     => true, // авто-создание колонки таксы в таблице ассоциированного типа записи. (с версии 3.5)
		'show_in_rest'          => true, // добавить в REST API
		'rest_base'             => null, // $taxonomy
		// '_builtin'              => false,
		//'update_count_callback' => '_update_post_term_count',
	] );
}
  • Вопрос задан
  • 556 просмотров
Пригласить эксперта
Ответы на вопрос 1
Kozack
@Kozack Куратор тега WordPress
Thinking about a11y
Откройте документацию и посмотрите :)

https://wp-kama.ru/function/wp_query#post_types
https://wp-kama.ru/function/wp_query#taxonomies

Это если нужно вывести где-то какие-то конкретные посты. То есть, чтобы вывести сначала 4 поста одной категории, потом 4 другой нужно вызывать get_posts дважды.

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

Кроме того, ВП самостоятельно выводит Все посты, определенного термина если открыть архив указанного термина: example.com/action/offering
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы