Где хранятся пользовательские типы WordPress?

20

Где хранятся пользовательские типы? Потому что при создании пользовательского типа в wp_posts тип записи устанавливается на <new_custom_post_type>. Но где хранится информация о новом пользовательском типе записи?

Noor
источник

Ответы:

14

Наконец-то я нашел данные о пользовательских типах записей. Он хранится в таблице wp_post, где post_type = пользовательский тип записи (например, «products»). Данные поля (столбца) хранятся в wp_postmeta, где meta_key - это имя столбца, а meta_value - значение столбца.

Этот запрос вернет все данные, связанные с пользовательским типом записи "products":

SELECT P.ID, P.post_title, M.meta_key, M.meta_value
FROM wp_posts AS P
INNER JOIN wp_postmeta AS M ON M.post_id = P.ID
WHERE P.post_type = 'products' and P.post_status = 'publish'
ORDER BY post_title, meta_key
Боб Джонс
источник
12

Детали пользовательских типов записей нигде не хранятся, они загружаются во время выполнения с каждым запросом через register_post_typeвызовы.

Milo
источник
хмммм, хорошо, вот когда я пытался найти информацию в базе данных, не видел их, спасибо!
Noor
1
Это совсем не так.
Bainternet
3
Это может быть верным для определения пользовательского типа записи, но не затрагивает вопрос о том, где хранятся данные, связанные с каждым экземпляром пользовательского типа записи.
Боб Джонс
@BobJones в вопросе упоминается wp_postsтаблица, поэтому кажется, что они знают, где хранятся данные постов. но если у вас другая интерпретация вопроса, то, возможно, вам следует добавить свой собственный ответ.
Майло
7

Как упомянуто @milo в этом ответе

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

через SQL

Вы можете просмотреть все сохраненные типы записей PUBLIC, используя следующий SQL-запрос

SELECT DISTINCT( post_type ) FROM wp_posts;

Который выведет что-то похожее на:

+----------------------+
| post_type            |
+----------------------+
| attachment           |
| competition          |
| custom_css           |
| customize_changeset  |
| deprecated_log       |
| experts              |
| magazine             |
| nav_menu_item        |
| page                 |
| post                 |
| revision             |
+----------------------+

через WP CLI

Кроме того, если у вас есть доступ к wp cli , вы можете запустить:

wp post-type list

Который будет выводить что-то вроде:

 +---------------------+-----------------------+--------------+--------------+--------+---------------------+
 | name                | label                 | description  | hierarchical | public | capability_type     |
 +---------------------+-----------------------+--------------+--------------+--------+---------------------+
 | post                | Posts                 |              |              | 1      | post                |
 | page                | Pages                 |              | 1            | 1      | page                |
 | attachment          | Media                 |              |              | 1      | post                |
 | revision            | Revisions             |              |              |        | post                |
 | nav_menu_item       | Navigation Menu Items |              |              |        | post                |
 | custom_css          | Custom CSS            |              |              |        | post                |
 | customize_changeset | Changesets            |              |              |        | customize_changeset |
 | deprecated_log      | Deprecated Calls      |              |              |        | post                |
 +---------------------+-----------------------+--------------+--------------+--------+---------------------+
Крейг Уэйн
источник
Это лучший ответ для ОП. Спасибо.
MarsAndBack
4

Вы можете использовать функцию, get_post_typesчтобы получить информацию о любом и всех типах сообщений, которые активны в это время. Чтобы получить информацию о конкретном типе поста, используйте get_post_type_object.

Мэнни Флермонд
источник
3
+1 - чтобы сделать возвращаемые типы сообщений get_post_typesтолько из пользовательских, _builtinможно задать параметрfalse
Николай
1

WordPress по умолчанию поставляется с некоторыми типами постов, такими как страницы, посты и т. Д. В Wordpress также есть возможность создавать собственные типы постов. Как стандартные, так и пользовательские сообщения хранятся в одной таблице "wp_posts" путем дифференцирования всех типов сообщений на основе столбца "post_type" в таблице "wp_posts".

Например:
страницы -> post_type = "page",
отзывы -> post_type = "отзывы" и
т. Д.

Чтобы получить больше информации об этом post_types, который будет доступен в таблице "wp_postmeta".

Радж
источник