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
14 августа 2019 39
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация