Wo werden benutzerdefinierte WordPress-Typen gespeichert?

20

Wo werden benutzerdefinierte Typen gespeichert? Denn wenn in wp_posts ein benutzerdefinierter Typ erstellt wird, wird der Post-Typ auf "the" gesetzt <new_custom_post_type>. Aber wo sind die Details des neuen benutzerdefinierten Beitragstyps gespeichert?

Noor
quelle

Antworten:

14

Ich habe endlich die benutzerdefinierten Post-Typ-Daten gefunden. Es wird in der Tabelle wp_post gespeichert, wobei post_type = benutzerdefinierter Posttyp (z. B. "Produkte"). Die Felddaten (Spaltendaten) werden in wp_postmeta gespeichert, wobei meta_key der Spaltenname und meta_value der Spaltenwert ist.

Diese Abfrage bringt alle Daten zurück, die dem benutzerdefinierten Beitragstyp "Produkte" zugeordnet sind:

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
quelle
12

Die Details der benutzerdefinierten Beitragstypen werden nirgendwo gespeichert. Sie werden zur Laufzeit bei jeder Anforderung über register_post_typeAufrufe geladen .

Milo
quelle
hmmmm, ok, das ist y, als ich versuchte, nach den Informationen in der Datenbank zu suchen, sah sie nicht, danke!
Noor
1
Das stimmt überhaupt nicht.
Bainternet
3
Dies mag für die Definition des benutzerdefinierten Beitragstyps zutreffen, befasst sich jedoch nicht mit der Frage, wo die Daten gespeichert werden, die jeder Instanz eines benutzerdefinierten Beitragstyps zugeordnet sind.
Bob Jones
@ BobJones die Frage erwähnt die wp_postsTabelle, so scheint es ziemlich klar, dass sie wissen, wo die Post-Daten gespeichert sind. aber wenn Sie eine andere Interpretation der Frage haben, sollten Sie vielleicht Ihre eigene Antwort hinzufügen.
Milo
7

Wie von @milo in dieser Antwort erwähnt

Beitragstypen werden jedoch nicht separat in der Datenbank gespeichert.

über SQL

Mit der folgenden SQL-Abfrage können Sie alle gespeicherten PUBLIC- Beitragstypen anzeigen

SELECT DISTINCT( post_type ) FROM wp_posts;

Welches wird etwas Ähnliches ausgeben wie:

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

über WP CLI

Wenn Sie Zugriff auf wp cli haben , können Sie außerdem Folgendes ausführen:

wp post-type list

Welches wird etwas ausgeben wie:

 +---------------------+-----------------------+--------------+--------------+--------+---------------------+
 | 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
quelle
Dies ist eine bessere Antwort auf das OP. Danke.
MarsAndBack
4

Sie können die Funktion verwenden get_post_types, um Informationen zu allen zu diesem Zeitpunkt aktiven Beitragstypen abzurufen. Verwenden Sie, um Informationen zu einem bestimmten Beitragstyp abzurufen get_post_type_object.

Manny Fleurmond
quelle
3
+1 - Um die zurückgegebenen Post-Typen get_post_typesnur aus benutzerdefinierten zu machen, kann der Parameter _builtinauffalse
Nicolai
1

Standardmäßig enthält WordPress einige Beispielposttypen wie Seiten, Posts usw. Wordpress bietet die Möglichkeit, auch eigene benutzerdefinierte Posttypen zu erstellen. Sowohl Standardbeiträge als auch benutzerdefinierte Beiträge werden in einer einzigen Tabelle "wp_posts" gespeichert, indem alle Beitragstypen basierend auf der Spalte "post_type" in der Tabelle "wp_posts" unterschieden werden.

ZB:
Seiten -> post_type = "Seite",
Testimonials -> post_type = "Testimonials"
etc

Weitere Informationen zu diesen post_types erhalten Sie in der Tabelle "wp_postmeta".

Raj
quelle