Wp_insert_post के साथ पोस्ट करने के लिए टैक्सोनॉमी डेटा संलग्न करना


17

मैं एक फ्रंट एंड पोस्टिंग सिस्टम को लागू करने की कोशिश कर रहा हूं जो कई ड्रॉपडाउन चुनिंदा क्षेत्रों में टैक्सोनॉमी डेटा दिखाता है। प्रत्येक ड्रॉपडाउन का नाम "नाम" का उपयोग करके किया $argजाता है wp_dropdown_categories()

wp_dropdown_categories( array(
    'taxonomy'      => 'location',
    'hide_empty'    => 0,
    'orderby'       => 'name',
    'order'         => 'ASC',
    'name'          => 'location',
) );

जैसा कि आप देख सकते हैं कि वर्गीकरण "स्थान" है और चयनित नाम भी "स्थान" है।

मैं इसके बाद प्रत्येक टैक्सोनॉमी चुनिंदा ड्रॉपडाउन के लिए चर जोड़ देता हूं जैसे कि post_title, post_tentent आदि के साथ:

$title          = trim( $_POST['wpuf_post_title'] );
$content        = trim( $_POST['wpuf_post_content'] );
$tags           = wpuf_clean_tags( $_POST['wpuf_post_tags'] );
$customcategory = trim( $_POST['customcategory'] );
$cat            = trim( $_POST['cat'] );
$location       = trim( $_POST['location'] );
$sale_rental    = trim( $_POST['sale_rental'] );
$price          = trim( $_POST['price'] );

अंत में मैं अतिरिक्त जानकारी जोड़कर एक सरणी में भेजने के लिए तैयार हूं wp_insert_post()। मैं इस बात पर काफी अड़ा हुआ हूं कि क्या मैं tax_inputनीचे दिए गए ऐरे में जोड़कर सही काम कर रहा हूं जैसा कि मुझे कोडेक्स से समझ में आता है कि मुझे क्या करना है।

'tax-input' => array( 
    $location,
    $sale_rental,
    $price
),

ताकि यह सब इस तरह दिखे:

$my_post = array(
    'post_title'    => $title,
    'post_content'  => $content,
    'post_status'   => $post_status,
    'post_author'   => $userdata->ID,
    'post_category' => array( $_POST['cat'] ),
    'post_type'     => $customcategory,
    'tags_input'    => $tags,
    'tax_input'     => array( 
        $location,
        $sale_rental,
        $price
    ),
);

$post_id = wp_insert_post( $my_post );

हालाँकि, जब मैंने नई पोस्ट सबमिट की थी, तो सभी मानक पोस्ट डेटा (और मेरी कस्टम पोस्ट प्रकार) भी ठीक है, लेकिन टैक्सोनॉमी नहीं करते हैं। मैं स्पष्ट रूप से कुछ गलत कर रहा हूँ लेकिन क्या?

जवाबों:


25

wp_set_object_termsप्रत्येक टैक्सोनॉमी के लिए पोस्ट आईडी का उपयोग करने के बाद:

...
$post_id = wp_insert_post( $my_post );
wp_set_object_terms( $post_id, $location, 'location' );
wp_set_object_terms( $post_id, $sale_rental, 'sale_rental' );
wp_set_object_terms( $post_id, $price, 'price' );

मुझे अभी पता नहीं है कि मैं आपकी मदद के बिना कहां रहूंगा, पहली बार काम किया ... बहुत धन्यवाद बैनेटर्न। उत्तर के रूप में चिह्नित
मार्टिनजे

खुशी है कि मैं मदद कर सकता हूँ :)
Bainternet

क्या $ स्थान और पूर्णांक या स्ट्रिंग्स के $ sale_rental सरणियाँ हैं?
डग

5

आप इसे wp_insert_post का उपयोग करके कर सकते हैं , लेकिन आपको कर में निर्दिष्ट करना होगा tax_input, इसलिए इसे इस तरह दिखना चाहिए:

$item['tax_input'] = array (
    'location'      => implode( ',', $location ),
    'sale_rental'   => implode( ',', $sale_rental ),
    'price'         => implode( ',', $price ),
)

मैं implode()ऐसा उपयोग करता हूं जो $locationकई शब्दों के साथ एक सरणी हो सकती है।

इसके अलावा, ध्यान दें कि यह केवल गैर-पदानुक्रमित वर्गीकरण के लिए काम करता है। पदानुक्रमित टैक्सोनोमी के लिए आपको एस्ट्रिंग के बजाय एक सरणी की आपूर्ति करनी चाहिए।


2

समस्या का स्रोत

इस विषय पर कुछ शोध के बाद, मुझे इंटर्नल (जो मैंने किया था) की जांच करने के लिए कहा गया था। जैसा कि मैं कस्टम पोस्ट प्रकार के रूप में एक बाहरी फ़ीड से पोस्ट आयात कर रहा था, मैं बस उपयोगकर्ता को -1(बॉट उपयोगकर्ता जोड़ने के बजाय) सेट करता हूं । मेरे पास समस्या यह थी कि wp_insert_post()एक tax_inputसेट के साथ , एक उपयोगकर्ता क्षमता के लिए आंतरिक रूप से जांच करता है, जो एक गैर मौजूदा उपयोगकर्ता के पास स्पष्ट रूप से नहीं है।

बचाव के लिए SysBot

तब समाधान यह था कि मैंने SysBot प्लगइन लिखा था । इस तरह मैं बस उस नए बनाए गए पोस्ट में SysBot उपयोगकर्ता (जिसमें संपादक की भूमिका है ) को संलग्न कर सकता था और सब कुछ उसी तरह से काम कर रहा था जिस तरह से यह अपेक्षित था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.