WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

Пользовательский тип записей

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

Регистрация пользовательского типа:

// Register carousel post type
add_action('init', 'carousel_init');
function carousel_init(){
	register_post_type('icons', array(
		'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'          => 'Карусель',
			'featured_image'     => 'Изображение иконки',
			'set_featured_image' => 'Выбрать иконку',

		),
		'public'             => true,
		'publicly_queryable' => true,
		'show_ui'            => true,
		'show_in_menu'       => true,
		'query_var'          => true,
		'rewrite'            => true,
		'capability_type'    => 'post',
		'has_archive'        => true,
		'hierarchical'       => false,
		'menu_position'      => null,
		'menu_icon'          => 'dashicons-images-alt',
		'supports'           => array('title','custom-fields'),
		'taxonomies'         => array('carousel'),
	) );
}

Регистрация таксы для него

// Register carousel taxonomy
add_action( 'init', 'create_carousel_taxonomy' );
function create_carousel_taxonomy(){
	// Добавляем древовидную таксономию 'genre' (как категории)
	register_taxonomy('carousel', array('icons'), array(
		'hierarchical'  => true,
		'labels'        => array(
			'name'              => _x( 'Категории', 'taxonomy general name' ),
			'singular_name'     => _x( 'Категория', 'taxonomy singular name' ),
			'search_items'      =>  __( 'Поиск категории' ),
			'all_items'         => __( 'Все категории' ),
			'parent_item'       => null,
			'parent_item_colon' => null,
			'edit_item'         => __( 'Редактировать' ),
			'update_item'       => __( 'Обновить' ),
			'add_new_item'      => __( 'Добавить новую' ),
			'new_item_name'     => __( 'Название карусели' ),
			'menu_name'         => __( 'Категории' ),
		),
		'show_ui'       => true,
		'query_var'     => true,
		//'rewrite'       => array( 'slug' => 'the_genre' ), // свой слаг в URL
	));
}

Экшен по котором вывожу карусель

// Carousel callback action
add_action('home_carousel', 'get_home_carousel');
function get_home_carousel(){
	$icons = new WP_Query([
		'post_type'         => 'icons',
		'posts_per_page'    => -1,
		'tax_query'         => [
			[
				'taxonomy' => 'carousel',
				'field'    => 'slug',
				'terms'    => 'home',
				'operator' => 'AND',
			],
		],
	]);

	$items = [];
	if ( $icons->have_posts() ){
		while( $icons->have_posts() ){ $icons->the_post();
			$img = wp_get_attachment_image_src(
				get_post_meta(
					$icons->post->ID,
					'icon_image',
					true
				),
				'full'
			);
			$items[] = [
				'title' => [
					'name' => get_the_title($icons->post->ID),
					'color' => get_post_meta(
						$icons->post->ID,
						'icon_color',
						true
					),
				],
				'link' => get_post_meta(
					$icons->post->ID,
					'icon_link',
					true
				),
				'img' => [
					'src' => $img[0],
					'width' => $img[1],
					'height' => $img[2],
				],
			];
		}
	}

	wp_reset_postdata();

	build_carousel_template($items);
}

Тут собираю разметку карусели

// Build carousel template
function build_carousel_template($items){
	if (!empty($items) && is_array($items)) :
		$tpl = '';
		foreach ($items as $item) {
			$tpl .= '<div class="carousel-wrap">';
				$tpl .= '<a href="' . $item['link'] . '" class="carousel-ico">';
					$tpl .= '<img src="' . $item['img']['src'] . '">';
				$tpl .= '</a>';

				$tpl .= '<a href="' . $item['link'] . '" class="carousel-link">';
					$tpl .= '<span style="color:' . $item['title']['color'] . ';">';
						$tpl .= $item['title']['name'];
					$tpl .= '</span>';
				$tpl .= '</a>';
			$tpl .= '</div>';
		}

		echo '<div class="col-12">';
			echo '<div class="home-carousel">' . $tpl . '</div>';
		echo '</div>';
	endif;
}
0
Maestro
11 месяцев назад 39
  • 1
    Kama7770

    При регистрации таксономии укажи true в параметре show_admin_column:

    'show_admin_column' => true

    П.С. не понял зачем ты тут дал код вывода, он тут при чем?

    Maestro 11 мес назад

    Спасибо, вечером попробую. Что касательно вывода, мб кому то пригодится)

    Maestro 11 мес назад

    Работает, спасибо

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация