WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

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

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

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

// 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
4.5 лет назад 42
  • 1
    Kama9601

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

    'show_admin_column' => true

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

    Maestro 4.5 лет назад

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

    Maestro 4.5 лет назад

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

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