Gdzie są przechowywane niestandardowe typy wordpress?

20

Gdzie są przechowywane typy niestandardowe? Ponieważ po utworzeniu typu niestandardowego w wp_posts typem wpisu jest wartość <new_custom_post_type>. Ale gdzie są przechowywane szczegóły nowego niestandardowego typu postu?

Noor
źródło

Odpowiedzi:

14

W końcu znalazłem dane niestandardowego typu postu. Jest on przechowywany w tabeli wp_post, gdzie post_type = niestandardowy typ postu (np. „Produkty”). Dane pola (kolumny) są przechowywane w wp_postmeta, gdzie klucz_meta to nazwa kolumny, a wartość_meta to wartość kolumny.

To zapytanie przywróci wszystkie dane związane z niestandardowym typem postu „produkty”:

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
Bob Jones
źródło
12

Szczegóły niestandardowych typów postów nie są nigdzie przechowywane, są ładowane w czasie wykonywania każdego żądania za pośrednictwem register_post_typepołączeń.

Milo
źródło
hmmmm, ok, to kiedy próbowałem wyszukać informacje w bazie danych, nie widziałem ich, dzięki!
Noor
1
To wcale nie jest prawda.
Bainternet,
3
Może tak być w przypadku definicji niestandardowego typu postu, ale nie rozwiązuje kwestii, gdzie przechowywane są dane powiązane z każdą instancją niestandardowego typu postu.
Bob Jones
@BobJones pytanie wspomina o wp_poststabeli, więc wydaje się całkiem jasne, że wiedzą, gdzie są przechowywane dane postu. ale jeśli masz inną interpretację pytania, być może powinieneś dodać własną odpowiedź.
Milo,
7

Jak wspomniano w @milo w tej odpowiedzi

Jednak typy postów nie są przechowywane osobno w bazie danych, ale powiedziano to ...

przez SQL

możesz wyświetlić wszystkie zapisane typy wpisów PUBLIC, używając następującego zapytania sql

SELECT DISTINCT( post_type ) FROM wp_posts;

Co da wynik podobny do:

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

przez WP CLI

Dodatkowo, jeśli masz dostęp do wp cli , możesz uruchomić:

wp post-type list

Co da wynik:

 +---------------------+-----------------------+--------------+--------------+--------+---------------------+
 | 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                |
 +---------------------+-----------------------+--------------+--------------+--------+---------------------+
Craig Wayne
źródło
To lepsza odpowiedź na PO. dzięki.
MarsAndBack
4

Możesz użyć tej funkcji, get_post_typesaby uzyskać informacje o wszystkich i wszystkich typach postów, które są aktywne w tym czasie. Aby uzyskać informacje o określonym typie postu, użyj get_post_type_object.

Manny Fleurmond
źródło
3
+1 - Aby ustawić typy zwracanych postów get_post_typestylko na podstawie niestandardowych, parametr _builtinmożna ustawić nafalse
Nicolai
1

Domyślnie WordPress zawiera niektóre przykładowe typy postów, takie jak strony, posty itp. Wordpress ma również opcję tworzenia własnych niestandardowych typów postów. Zarówno domyślne, jak i niestandardowe posty są przechowywane w pojedynczej tabeli „wp_posts” poprzez rozróżnienie wszystkich typów postów w oparciu o kolumnę „post_type” w tabeli „wp_posts”.

Np .:
strony -> post_type = "strona",
testiminials -> post_type = "referencje"
itp

Aby pobrać więcej informacji o tych typach postów, które byłyby dostępne w tabeli „wp_postmeta”.

Raj
źródło