wp_set_object_terms [ WordPress Function ]
| Parameters: |
|
| Uses: |
|
| Returns: |
|
| Defined at: |
|
Create Term and Taxonomy Relationships.
Relates an object (post, link etc) to a term and taxonomy type. Creates the term and taxonomy relationship if it doesn't already exist. Creates a term if it doesn't exist (using the slug).
A relationship means that the term is grouped in or belongs to the taxonomy. A term has no meaning until it is given context by defining which taxonomy it exists under.
Source
<?php
function wp_set_object_terms($object_id, $terms, $taxonomy, $append = false) {
global $wpdb;
$object_id = (int) $object_id;
if ( ! taxonomy_exists($taxonomy) )
return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy'));
if ( !is_array($terms) )
$terms = array($terms);
if ( ! $append )
$old_tt_ids = wp_get_object_terms($object_id, $taxonomy, array('fields' => 'tt_ids', 'orderby' => 'none'));
else
$old_tt_ids = array();
$tt_ids = array();
$term_ids = array();
$new_tt_ids = array();
foreach ( (array) $terms as $term) {
if ( !strlen(trim($term)) )
continue;
if ( !$term_info = term_exists($term, $taxonomy) ) {
// Skip if a non-existent term ID is passed.
if ( is_int($term) )
continue;
$term_info = wp_insert_term($term, $taxonomy);
}
if ( is_wp_error($term_info) )
return $term_info;
$term_ids[] = $term_info['term_id'];
$tt_id = $term_info['term_taxonomy_id'];
$tt_ids[] = $tt_id;
if ( $wpdb->get_var( $wpdb->prepare( "SELECT term_taxonomy_id FROM $wpdb->term_relationships WHERE object_id = %d AND term_taxonomy_id = %d", $object_id, $tt_id ) ) )
continue;
do_action( 'add_term_relationship', $object_id, $tt_id );
$wpdb->insert( $wpdb->term_relationships, array( 'object_id' => $object_id, 'term_taxonomy_id' => $tt_id ) );
do_action( 'added_term_relationship', $object_id, $tt_id );
$new_tt_ids[] = $tt_id;
}
if ( $new_tt_ids )
wp_update_term_count( $new_tt_ids, $taxonomy );
if ( ! $append ) {
$delete_terms = array_diff($old_tt_ids, $tt_ids);
if ( $delete_terms ) {
$in_delete_terms = "'" . implode("', '", $delete_terms) . "'";
do_action( 'delete_term_relationships', $object_id, $delete_terms );
$wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->term_relationships WHERE object_id = %d AND term_taxonomy_id IN ($in_delete_terms)", $object_id) );
do_action( 'deleted_term_relationships', $object_id, $delete_terms );
wp_update_term_count($delete_terms, $taxonomy);
}
}
$t = get_taxonomy($taxonomy);
if ( ! $append && isset($t->sort) && $t->sort ) {
$values = array();
$term_order = 0;
$final_tt_ids = wp_get_object_terms($object_id, $taxonomy, array('fields' => 'tt_ids'));
foreach ( $tt_ids as $tt_id )
if ( in_array($tt_id, $final_tt_ids) )
$values[] = $wpdb->prepare( "(%d, %d, %d)", $object_id, $tt_id, ++$term_order);
if ( $values )
$wpdb->query("INSERT INTO $wpdb->term_relationships (object_id, term_taxonomy_id, term_order) VALUES " . join(',', $values) . " ON DUPLICATE KEY UPDATE term_order = VALUES(term_order)");
}
do_action('set_object_terms', $object_id, $terms, $tt_ids, $taxonomy, $append, $old_tt_ids);
return $tt_ids;
}
?>
Examples [ wp-snippets.com ]
Top Google zoekresultaten
- Function Reference/wp set object terms « WordPress Codex
Description. Relates an object (post, link etc) to a term and taxonomy type (tag, category, etc). Creates the term and taxonomy relationship if it doesn't already ...
codex.wordpress.org - WordPress › Support » Tags — wp_set_object_terms
(forgot?) Register · WordPress › Support » wp_set_object_terms ...
wordpress.org - wp_set_object_terms() — prevent overwrite? - WordPress - Stack ...
Feb 2, 2012 ... wp_set_object_terms() has a fourth argument called append . Setting that to true during the call should add the term without unsetting the ...
wordpress.stackexchange.com - wp_set_object_terms() | Rachel Carden
wp_set_object_terms(). This WordPress function requires the CPT-onomy class. Description; Usage; Parameters; Return Values; Examples; Related Functions ...
rachelcarden.com
Gebruikersdiscussies [ wordpress.org ]
- dkotter on "Change Post Category If Has Comment"
- bjrdesign on "Change Post Category If Has Comment"
- dkotter on "Change Post Category If Has Comment"
- bjrdesign on "Change Post Category If Has Comment"
- alexkoti on "wp_set_object_terms doesn't seem to work as described in the Codex"
- deeem119 on "wp_set_object_terms doesn't seem to work as described in the Codex"
- visualapproch on "wp_set_object_terms"
- wjdennen on "Setting the taxonomy name programmatically"
- Rev. Voodoo on "How to add Taxonomy to a post"
- AliMH on "How to add Taxonomy to a post"