2010-03-12 22 views
12

पर टैग जोड़ें/निकालें मुझे पता है कि यह एक साधारण ऑपरेशन की तरह प्रतीत होता है, लेकिन मुझे कोई संसाधन या दस्तावेज नहीं मिल रहा है जो बताता है कि पोस्ट आईडी का उपयोग करके पोस्ट में प्रोग्राम्सेटिक रूप से टैग को कैसे जोड़ना और निकालना है।वर्डप्रेस एपीआई:

नीचे

function addTerm($id, $tax, $term) { 

    $term_id = is_term($term); 
    $term_id = intval($term_id); 
    if (!$term_id) { 
     $term_id = wp_insert_term($term, $tax); 
     $term_id = $term_id['term_id']; 
     $term_id = intval($term_id); 
    } 
    $result = wp_set_object_terms($id, array($term_id), $tax, FALSE); 

    return $result; 
} 

उत्तर

5

आप पहली बार get_object_terms कॉल करने के लिए सभी शर्तों है कि पहले से ही मौजूद प्राप्त करने की आवश्यकता है कि मैं क्या उपयोग कर रहा हूँ का एक नमूना है, लेकिन यह अन्य सभी टैग के ऊपर लिख रहा है ...।

अपडेट किया गया कोड

function addTerm($id, $tax, $term) { 

    $term_id = is_term($term); 
    $term_id = intval($term_id); 
    if (!$term_id) { 
     $term_id = wp_insert_term($term, $tax); 
     $term_id = $term_id['term_id']; 
     $term_id = intval($term_id); 
    } 

    // get the list of terms already on this object: 
    $terms = wp_get_object_terms($id, $tax) 
    $terms[] = $term_id; 

    $result = wp_set_object_terms($id, $terms, $tax, FALSE); 

    return $result; 
} 
+0

FYI करें: is_term term_exists – Brad

+3

को बदल दिया गया है जहां इस के "टैग हटाने" हिस्सा है? –

+0

टैग को हटाए जाने के लिए http://wordpress.stackexchange.com/a/49256/9142 देखें। –

4

wp_add_post_tags($post_id,$tags) उपयोग करने का प्रयास;

2

यहाँ कैसे मैं यह कर रहा है:

$tag="This is the tag" 
$PostId=1; // 
wp_set_object_terms($PostId, array($tag), 'post_tag', true); 

नोट: wp_set_object_terms() उम्मीद दूसरा पैरामीटर एक श्रृंखला होना चाहिए।

1

यदि आप पोस्ट आईडी नहीं जानते हैं तो क्या होगा? आप बस बनाई गई सभी नई पोस्ट में टैग जोड़ना चाहते हैं?

वर्डप्रेस एपीआई समारोह add_action('publish_post', 'your_wp_function'); उपयोग करते समय, आप स्वचालित रूप से समारोह बुला रहे हैं post_id पहले तर्क के रूप में इंजेक्ट किया जाता है:

function your_wp_function($postid) { 
} 
1

वास्तव में, wp_set_object_terms संभाल कर सकते हैं सब कुछ आप अपने आप में की जरूरत है:

यदि आपको वास्तव में एक अलग फ़ंक्शन की आवश्यकता है:

function addTag($post_id, $term, $tax='post_tag') { 
    return wp_set_object_terms($post_id, $term, $tax, TRUE); 
} 

wp_set_object_terms के पैरामीटर:

  1. पोस्ट आईडी
  2. स्वीकार करता है ...
    • एक एकल स्ट्रिंग (जैसे 'बहुत बढ़िया पोस्ट')
    • किसी मौजूदा टैग की एक आईडी (उदा। 1), या
    • या तो एक सरणी (उदा। सरणी ('बहुत बढ़िया पोस्ट', 1))।
    • नोट: यदि आप कोई गैर-आईडी प्रदान करते हैं, तो स्वचालित रूप से टैग बना देगा।
  3. वर्गीकरण (उदा। डिफ़ॉल्ट टैग के लिए, 'post_tag' का उपयोग करें)।
  4. करने के लिए ...
    • (FALSE) प्रदान की लोगों के साथ सभी मौजूदा शर्तों का स्थान ले, या
    • (TRUE_) जोड़ें/जोड़ें मौजूदा शब्दों के लिए।

मुबारक कोडिंग!

2

वर्डप्रेस 3.6 के बाद से wp_remove_object_terms($object_id, $terms, $taxonomy) है जो ठीक है।

$terms पैरामीटर को दूर करने के slug(s) या term(s) की ID(s) प्रतिनिधित्व करता है और सरणी, पूर्णांक या स्ट्रिंग स्वीकार करता है।

स्रोत: http://codex.wordpress.org/Function_Reference/wp_remove_object_terms