WordPress как на ладони
wordpress jino

get_post_type_object() WP 3.0.0

Получает объект (данные) указанного типа записи: post, page, attachment или новый тип записи. Объект содержит все параметры (настройки) типа записи.

Используется в: post_type_exists(), get_post_type_archive_link().
✈ 1 раз = 0.000068с = очень быстро | 50000 раз = 2.36с = быстро PHP 7.0.5, WP 4.5.2

Хуков нет.

Возвращает

WP_Post_Type/null. Объект со всеми данными о типе записи. С версии 4.6. возвращает экземпляр объекта WP_Post_Type.

Использование

get_post_type_object( $post_type );
$post_type(строка) (обязательный)
Название зарегистрированного типа записи.

Примеры

#1 Получим название произвольного типа поста

Для вывода на экран, получим локализованное название типа поста:

$obj = get_post_type_object( 'post' );
echo $obj->labels->singular_name;

Тоже самое можно записать так:

global $wp_post_types;
$obj = $wp_post_types['post'];
echo $obj->labels->singular_name;

#2 Как выглядит объект

Для наглядности: объект базового типа поста "post" выглядит так:

$obj = get_post_type_object( 'post' );

/* $obj будет содержать:

stdClass Object
(
	[labels] => stdClass Object
		(
			[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] => 
			[all_items] => Все записи
			[menu_name] => Записи
			[name_admin_bar] => Запись
		)

	[description] => 
	[public] => 1
	[hierarchical] => 
	[exclude_from_search] => 
	[publicly_queryable] => 1
	[show_ui] => 1
	[show_in_menu] => 1
	[show_in_nav_menus] => 1
	[show_in_admin_bar] => 1
	[menu_position] => 
	[menu_icon] => 
	[capability_type] => post
	[map_meta_cap] => 1
	[register_meta_box_cb] => 
	[taxonomies] => Array
		(
		)

	[has_archive] => 
	[rewrite] => 
	[query_var] => 
	[can_export] => 1
	[delete_with_user] => 1
	[_builtin] => 1
	[_edit_link] => post.php?post=%d
	[name] => post
	[cap] => stdClass Object
		(
			[edit_post] => edit_post
			[read_post] => read_post
			[delete_post] => delete_post
			[edit_posts] => edit_posts
			[edit_others_posts] => edit_others_posts
			[publish_posts] => publish_posts
			[read_private_posts] => read_private_posts
			[read] => read
			[delete_posts] => delete_posts
			[delete_private_posts] => delete_private_posts
			[delete_published_posts] => delete_published_posts
			[delete_others_posts] => delete_others_posts
			[edit_private_posts] => edit_private_posts
			[edit_published_posts] => edit_published_posts
			[create_posts] => edit_posts
		)

	[label] => Записи
)
*/

Код get post type object: wp-includes/post.php WP 4.8.2

<?php
function get_post_type_object( $post_type ) {
	global $wp_post_types;

	if ( ! is_scalar( $post_type ) || empty( $wp_post_types[ $post_type ] ) ) {
		return null;
	}

	return $wp_post_types[ $post_type ];
}

Cвязанные функции

Из метки: post_type (произвольный тип записи)

Еще из раздела: Типы записей

get_post_type_object 7 комментариев
  • Александр

    А как вывести название категории созданной в произвольных типах записей?
    так как код для такой категории не работает. Заранее благодарен!

    <?php echo get_cat_name();?>
    Ответитьгод назад #
    • Kama4464
      ## получает название элемента указанной таксономии
      function get_term_name( $cat_id, $taxonomy ) {
      	$cat_id = (int) $cat_id;
      	$category = get_term( $cat_id, $taxonomy );
      	if ( ! $category || is_wp_error( $category ) )
      		return '';
      	return $category->name;
      }
      
      // Использование функции, выведем называние термина 54 таксономии 'my_taxonomy'
      echo get_term_name( 54, 'my_taxonomy' );
      Ответитьгод назад #
      • Александр

        Спасибо, помогло! Можете еще подсказать как вывести имя поста созданной в произвольных типах записей и как вывести произвольное поле по id поста, который создан в произвольных типах записей, что то типа функции <?php echo (get_post_meta(id, 'my_pole', true)); ?>

        Ответитьгод назад #
        • Kama4464

          Для произвольных типов все работает также как для Постов: get_post_meta(), get_post() и т.д. - нет разницы произвольный это тип или обычный пост... Отличаются только ID записи...

          Ответитьгод назад #
          • Александр

            Понимаю, но произвольные поля я создавал через плагин который говорит что нужное поле нужно выводить так<?php types_render_field("my-number", array(); ?> и для одиночной записи это работает, но мне нужно вывести на главной странице сайта значение поля из определенной записи и код<?php echo (get_post_meta(id, 'my_pole', true)); ?> не работает.

            Ответитьгод назад #
            • Kama4464

              Такие плагины обычно добавляют к названию метаполе префикс. Скорее всего поле 'my_pole' неправильное, убедись что название метаполя правильно вписываешь... При редактировании записи, посмотри как точно метаполе называется...

              Ответитьгод назад #
              • Александр

                Спасибо за советы! Да, действительно, почитав документацию к плагину (было сложно так как с английским плоховато, и гугл не корректно переводит) выяснилось что к названию метаполя нужно было добавить особый префикс, после чего все заработало! Вывод: учить английский и читать документацию более внимательней!

                Ответитьгод назад #

Здравствуйте, !

Ваш комментарий