Switch language

wpseek.com
A WordPress-centric search engine for devs and theme authors




wp_set_object_terms [ WordPress Function ]

wp_set_object_terms ( $object_id, $terms, $taxonomy, $append = false )
Parameters:
  • (int) $object_id The object to relate to.
  • (array|int|string) $terms The slug or id of the term, will replace all existing related terms in this taxonomy.
  • (array|string) $taxonomy The context in which to relate the term to the object.
  • (bool) $append If false will delete difference of terms.
Uses:
  • $wpdb
Returns:
  • (array|WP_Error) Affected Term IDs
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 ]

Google Arama Sonuçlarý

Dahasý ...

0 User Note(s)

Henüz yok. Ýlk sen ol!

Yeni Ekle ...



HTML5 Powered with CSS3 / Styling, Performance & Integration, and Semantics