Damit alles funktioniert Begriffe oder nur mehrere maßgeschneiderte Taxonomien.
Da WordPress 4.4 und darüber hinaus Begriffe jetzt Objekte sind, genauso wie Beiträge, Seiten und benutzerdefinierte Inhaltstypen. Diese Änderung erleichtert es viel einfacher, Ihre Metadaten hinzuzufügen, zu entfernen und zu aktualisieren.
Die Hintergrundgeschichte mit dem Begriff meta
Metadatenmanipulation auf die alte Art und Weise
Ich habe zuvor über die Erweiterung von Taxonomien geschrieben, aber die Grundlagen waren, als Sie bereit waren, Ihre Metadaten zu speichern. Sie würden eine Funktion nennen, die so etwas aussah:
//saving new fields for category function save_extra_taxonomy_fields($term_id){ $term = get_term($term_id); $term_slug = $term->slug; //collect category image id from posted values $term_category_image_id = isset($_POST['category_image_id']) ? sanitize_text_field($_POST['category_image_id']) : ''; //update value and save it as an option update_option('category_image_id_' . $term_slug, $term_category_image_id); } add_action('create_category','save_extra_taxonomy_fields');
Im obigen Beispiel führen wir die an den Hook create_category angehängte Funktion aus (die beim Erstellen eines neuen Kategoriebegriffs ausgelöst wird). Dies wird nach unserem Wert und nach der Desinfektion als Option speichern. Während dies funktioniert, ist es nicht sehr hübsch.
Um mit dem Begriff Meta zu arbeiten Mit diesen Funktionen können Sie in Kombination mit neuen UI -Elementen neue Metadaten für Ihre Begriffe speichern und aktualisieren.
Hinzufügen von Metadaten für einen Begriff beinhaltet die Funktion add_term_meta. Sie müssen drei Parameter mit einem optionalen vierten angeben.
Stellen Sie sich als Beispiel vor, für jeden Begriff in unserer Kategorie -Taxonomie möchten wir ein neues Stück Metadaten zuweisen, basierend auf der Anzahl der viele Beiträge dieser Kategorie. Mit WordPress 4.4 können wir alle Begriffe durchlaufen und diese neuen Metadaten speichern (für die Verwendung später in unserem Thema oder in unserem Thema).
function add_featured_to_categories(){ //get all terms from the category taxonomy $taxonomy_name = 'category'; $term_args = array( 'orderby' => 'name', 'hide_empty' => false, 'fields' => 'ids' ); $terms = get_terms($taxonomy_name, $term_args); if($terms){ $term_key = 'term_size'; $term_value = 'empty'; $term_unique = true; //go through all terms and set the new term meta foreach($terms as $term_id){ $term = get_term($term_id, $taxonomy_name); $term_count = $term->count; //determine new meta value if($term_count > 10){ $term_value = 'big'; }else if($term_count >= 5 && $term_count < 10){ $term_value = 'medium'; }else if($term_count >= 1 && $term_count < 5){ $term_value = 'small'; } //save meta value add_term_meta($term_id, $term_key, $term_value, $term_unique); } } } add_action('init', 'add_featured_to_categories');
Wir können gespeicherte Begriffsmeta mit der Funktion get_term_meta lesen. Diese Funktion funktioniert ähnlich wie die Funktion get_post_meta, mit der Metadaten von Posts abgerufen werden. Um diese Funktion zu verwenden, um einen obligatorischen Parameter mit optionalen zwei Parametern anzugeben.
Schauen wir uns ein anderes Szenario an, in dem Sie dies möglicherweise nützlich finden.
Betrachten Sie eine Situation, in der wir bereits für jeden unserer Bedingungen in unserer Kategorie -Taxonomie bezeichnet werden. Diese gespeicherten Daten enthält die URL zu einem Bild, das beim Betrachten des Begriffs angezeigt werden sollte. Wir möchten dieses Bild als Banner unter unserer Termbeschreibung oder unserem Titels anzeigen, aber über unserer Auflistung von Beiträgen.
//given a term, collect its saved image to be displayed function display_term_meta_image($term_id, $term_taxonomy){ //get supplied term $term = get_term($term_id, $term_taxonomy); if($term){ $term_image_id = get_term_meta($term_id, 'term_image_id', true); if($term_image_id){ //get the medium image size for display $term_image = wp_get_attachment_image_src($term_image_id, 'medium', false); echo '<img . $term_image[0] . '" title="' . $term->name . ' image"/>'; } } }
Jetzt in unserer Kategorie.php- oder einer anderen untergeordneten Template -Datei können wir die Funktionalität ändern, in der unsere Termdaten angezeigt werden.
In meiner Situation mit vierundzwanzigzehn bearbeite ich die Datei category.php und rufe unsere neue Funktion direkt nach der Anzeige der Begriffe Beschreibungsinformationen an.
//get the current object (term) $term_obj = get_queried_object(); //display meta data image for term if(function_exists('display_term_meta_image')){ display_term_meta_image($term_obj->term_id, $term_obj->taxonomy); }
Dies zeigt unser Foto direkt unter der Beschreibung wie folgt an:
Wir können die Begriffsmetadaten genauso entfernen wie für Posts. Wenn wir die Funktion delete_term_meta verwenden, müssen wir zwei obligatorische Parameter mit einer Option Dritter angeben, wenn wir benötigen.
Schauen wir uns noch einmal ein Szenario an, in dem Sie dies möglicherweise verwenden. Stellen Sie sich vor, Sie durch ein großes Projekt und Sie haben bereits mehrere Meta -Daten für jeden Kategoriebegriff gespeichert. Sie haben festgestellt, dass einige dieser Daten, die Sie nicht mehr benötigen, wahrscheinlich löschen sollten, damit sie Ihre Datenbank nicht überladen.
//saving new fields for category function save_extra_taxonomy_fields($term_id){ $term = get_term($term_id); $term_slug = $term->slug; //collect category image id from posted values $term_category_image_id = isset($_POST['category_image_id']) ? sanitize_text_field($_POST['category_image_id']) : ''; //update value and save it as an option update_option('category_image_id_' . $term_slug, $term_category_image_id); } add_action('create_category','save_extra_taxonomy_fields');
Diese Funktion wird alle zusätzlichen Metadaten durchlaufen, die wir in unserer Variablen von $ erzeugen_term_keys nicht angegeben haben, und die Verschwendung in der Datenbank verringert (nützlich für Dutzende von Metadateneinträgen, die wir nicht mehr benötigen).
Wenn Sie wirklich daran interessiert waren, diese neuen Meta -Funktionen voranzutreiben, sich aber gegen ältere Versionen abdecken wollten, können Sie einige bedingte Funktionen erstellen, um sicherzustellen, dass alles funktioniert.
function add_featured_to_categories(){ //get all terms from the category taxonomy $taxonomy_name = 'category'; $term_args = array( 'orderby' => 'name', 'hide_empty' => false, 'fields' => 'ids' ); $terms = get_terms($taxonomy_name, $term_args); if($terms){ $term_key = 'term_size'; $term_value = 'empty'; $term_unique = true; //go through all terms and set the new term meta foreach($terms as $term_id){ $term = get_term($term_id, $taxonomy_name); $term_count = $term->count; //determine new meta value if($term_count > 10){ $term_value = 'big'; }else if($term_count >= 5 && $term_count < 10){ $term_value = 'medium'; }else if($term_count >= 1 && $term_count < 5){ $term_value = 'small'; } //save meta value add_term_meta($term_id, $term_key, $term_value, $term_unique); } } } add_action('init', 'add_featured_to_categories');
Wir starten zunächst Funktionen, um sicherzustellen, dass die neue Funktion add_term_meta definiert ist. Dies gilt nur für WordPress 4.4 und neuer. Wenn wir Unterstützung haben, verwenden wir die einfache add_term_meta -Funktion, um unserem Begriff Metadaten zuzuweisen.
Wenn wir keine Unterstützung haben, holen wir uns das Begriff Objekt selbst (nach der in der Term ID bestandenen ID) und aus diesem Grund extrahieren wir die $ Term_taxonomy -Daten und verwenden sie, um unseren endgültigen Schlüsselwert zu erstellen. Da wir in der Options -Tabelle sparen, müssen wir sicherstellen, dass der Schlüssel eindeutig ist, indem wir den Namen Taxonomie, die Laufzeit -ID und schließlich den Begriff Schlüssel in eine Variable hinzufügen. Wir müssen sicherstellen, dass der Schlüssel nicht mehr als 64 Zeichen lang ist und wenn dies abschneide. Sobald wir all dies getan haben, können wir unsere add_optionsfunktion aufrufen, um unseren Wert zu speichern.
Wie Sie sehen, wird dies etwas lang, aber Sie erhalten eine zusätzliche Flexibilität, um ältere und neuere WordPress -Versionen zu unterstützen.
Die Verwendung dieser neuen Meta -Funktionen sollte es Ihnen ermöglichen, Ihre Begriffe leichter zu erweitern, um eindeutige Funktionen bereitzustellen. Zum Beispiel möchten Sie möglicherweise ein Banner -Image oben in Ihre Begriffe hinzufügen oder Metadaten bereitstellen, damit Sie Ihre Begriffe bedingt unterschiedlich anzeigen können (z. B. das Laden einer neuen Vorlagendatei basierend auf dem angezeigten Begriff).
Mit der Flexibilität und Leichtigkeit des neuen Begriffs Meta -Funktionen können Sie dies noch heute in Ihren neuen Projekten implementieren!
Kann ich den Begriff meta in WordPress aktualisieren? Diese Funktion erfordert die Term -ID, den Metaschlüssel und den neuen Metawert. Wenn der Meta -Schlüssel für den Begriff nicht vorhanden ist, wird er hinzugefügt. . Diese Funktion erfordert die Term ID und den Meta -Schlüssel. Es löscht das angegebene Meta-Feld für den angegebenen Begriff. Es enthält Methoden zum Abrufen und Manipulieren von Termdaten, einschließlich Begriff Meta. Durch das Erstellen einer Instanz der Klasse für einen bestimmten Begriff und dann die von der Klasse bereitgestellten Methoden zum Abrufen, Hinzufügen, Aktualisieren oder Löschen der Meta -Daten des Begriffs. WordPress?
Das obige ist der detaillierte Inhalt vonEinführung in den WordPress -Begriff Meta und WP_term. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!