WordPress.org

Codex

Attention Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!

de:Funktionsreferenz/wp set object terms


Beschreibung

Weist einem Objekt (Seite (page), Beitrag (post), Custom Post Types usw) einen Term (Kategorie, Schlagwort, Custom Taxonomy Term) zu. Wenn es den Term nicht gibt, wird dieser erstellt.

Verwendung

<?php wp_set_object_terms$object_id$terms$taxonomy$append ); ?>

Parameter

$object_id
(int) (required) Das Objekt, das mit dem Term verknüpft werden soll, zb Post ID.
Default: None
$terms
(array/int/string) (required) ID oder Slug des Terms (Kategorie oder Tag IDs). Wenn der Parameter $append nicht auf true gesetzt wird, dann werden alle bestehenden Terms mit diesem hier ersetzt. Sollen alle Terms des Objektes gelöscht werden, dann muss hier ein leerer String oder NULL übergeben werden. Integers werden als Term IDs angesehen. Warnung: Manche Funktionen in deinem Code geben term_ids als einen String zurück. Strings werden als Slug angesehen, nicht als Term ID!
Default: None
$taxonomy
(array/string) (required) Die Taxonomie, mit der das Ojekt verknüpft werden soll. In Fragen kommen alle Custom Taxonomies oder die eingebauten Taxonomien "post_tag", "category", "post_format"..
Default: None
$append
(bool) (optional) Wenn der Wert auf "true" gesetzt wird, dann werden die übergebenen Terms an die bestehenden angehängt. Sonst werden die bestehenden Terms des Objektes ersetzt.
Default: False


Rückgabewerte

(mixed) 
  • (array) Ein Array der Terms die dem Objekt zugewiesen wurden. Achtung, das Array besteht aus term_taxonomy_ids und nicht aus term_ids,
  • (WP_Error) Ein WordPress Error Ojekt, bei ungültiger Taxonomie ('invalid_taxonomy').
  • (string) Wenn ein falscher Slug beim $terms Parameter übergeben wurde, dann wird der erste Term zurückgegeben. (Wenn eine Term ID ein String ist, dann wird das Term aber ganz normal gespeichert!)


Hooks

Beispiele

Gib einem Post eine Kategorie

Hier wird dem Post mit der ID 42 die Kategorien mit der ID 6 und 8 zugewiesen.


<?php

// Array der Kategorie IDs, welche dem Post zugewiesen werden.
$cat_ids = array( 6, 8 );

/*
 * Wir sollten sicherstellen, dass die IDs eh Integers sind und nicht Strings. Dies ginge hiermit:


$cat_ids = array_map( 'intval', $cat_ids );
$cat_ids = array_unique( $cat_ids );

 */

$term_taxonomy_ids = wp_set_object_terms( 42, $cat_ids, 'category' );

if ( is_wp_error( $term_taxonomy_ids ) ) {
	// Es gab ein Problem, die Kategorien konnten nicht mit dem Objekt verknüpft werden.
} else {
	// Perfekt! Alle Kategorien wurden zum Post Objekt gespeichert
}

Hinweis: Mit diesem Code hat der bearbeitete Post genau die Kategorien mit der ID 6 und 8. Alle anderen, vorher zugewiesen, bisherigen Kategorien gehen dadurch verloren! Will man das verhinden, muss $append auf "true" gesetzt werden.


Alle Kategorien eines Posts löschen

Will man alle Kategorien eines Posts entfernen, muss man nur NULL oder einen leeren Wert für $terms übergeben

<?php wp_set_object_terms( 42, null, 'category' ); ?>

Anmerkung

  • wp_set_post_terms() könnte für viele Zwecke hilfreicher sein, weil diese Funktion mehrere Überprüfungen vornimmt, ZB Umwandeln von kommagetrennten Taxonomien, umwandeln von Elternterms in Integerwerte uvm.
  • Bitte berücksichtigen, dass der Rückgabewerte ein Array ist, dass aus term_taxonomy_ids besteht. Annehmen könnte man, dass term_ids zurückkomen, dies ist aber falsch.
  • Verwendet wp_get_object_terms, taxonomy_exists, term_exists, wp_insert_term, get_taxonomy,

Änderungsprotokoll

Seit: 2.3.0

Quelltext

wp_set_object_terms() is located in wp-includes/taxonomy.php.

Ähnlich

See also index of Function Reference and index of Template Tags.