मैं कस्टम टैक्सोनॉमी के साथ कस्टम पोस्ट प्रकार की क्वेरी कैसे कर सकता हूं?


26

किसी कारण से मैं इसे कस्टम टैक्सोनॉमी का उपयोग करके किसी भी पोस्ट को हथियाने के लिए संघर्ष कर रहा हूं ... क्या कोई मेरी मूर्खता को उजागर कर सकता है?

 $args = array(
    'post_type' => 'adverts',
    'advert_tag' => 'politics' // Doesn't seem to work.
  );

query_posts($args); 

while ( have_posts() ) : the_post();
 //Show Posts
endwhile;

वर्गीकरण घोषणा:

add_action( 'init', 'add_custom_taxonomy', 0 );
function add_custom_taxonomy() {
register_taxonomy('advert_tag', 'Adverts', array(
  'hierarchical' => true,
  'labels' => array(
    'name' => _x( 'Advert Tags', 'taxonomy general name' ),
    'singular_name' => _x( 'Advert Tag', 'taxonomy singular name' ),
    'search_items' =>  __( 'Search Advert Tags' ),
    'all_items' => __( 'All Advert Tags' ),
    'parent_item' => __( 'Parent Advert Tag' ),
    'parent_item_colon' => __( 'Parent Advert Tag:' ),
    'edit_item' => __( 'Edit Advert Tag' ),
    'update_item' => __( 'Update Advert Tag' ),
    'add_new_item' => __( 'Add New Advert Tag' ),
    'new_item_name' => __( 'New Advert Tag Name' ),
    'menu_name' => __( 'Advert Tags' ),
  ),
  'rewrite' => array(
    'slug' => 'advert-tags',
    'with_front' => false,
    'hierarchical' => true
  ),
));
  }

कस्टम पोस्ट प्रकार घोषणा:

  add_action( 'init', 'create_post_type' );
  function create_post_type() {
    register_post_type( 'Adverts',
    array(
        'labels' => array(
            'name' => __( 'Adverts' ),
            'singular_name' => __( 'Advert'),
            'add_new' => __( 'Add New' ),
            'add_new_item' => __( 'Add a New Advert' ),
            'edit' => __( 'Edit' ),
            'edit_item' => __( 'Edit Advert' ),
            'new_item' => __( 'New Advert' ),
            'view' => __( 'View' ),
            'view_item' => __( 'View Advert' ),
            'search_items' => __( 'Search Adverts' ),
            'not_found' => __( 'No Adverts found' ),
            'not_found_in_trash' => __( 'No Adverts found in Trash' ),
            ),
        'supports' => array(
                'title',
                'thumbnail',
            ),
        'has_archive' => true,
        'menu_position' => 10,
        'public' => true,
        'rewrite' => array( 'slug' => 'adverts' ),
        'taxonomies' => array('advert_tag')
    )
);

}

जवाबों:


37

सभी के प्रशंसक कभी भी इसका उपयोग नहीं करते हैंquery_posts() , इसके बारे में अधिक यहां पढ़ें: आपको WP_Query बनाम क्वेरी_पोस्ट () बनाम get_posts () का उपयोग कब करना चाहिए?

आपको उन WP_Queryपोस्टों का उपयोग करना होगा जिनकी आपको आवश्यकता है। इसके लिए प्रलेखन पढ़ें । आपके मामले में क्वेरी इस तरह हो सकती है:

$the_query = new WP_Query( array(
    'post_type' => 'Adverts',
    'tax_query' => array(
        array (
            'taxonomy' => 'advert_tag',
            'field' => 'slug',
            'terms' => 'politics',
        )
    ),
) );

while ( $the_query->have_posts() ) :
    $the_query->the_post();
    // Show Posts ...
endwhile;

/* Restore original Post Data 
 * NB: Because we are using new WP_Query we aren't stomping on the 
 * original $wp_query and it does not need to be reset.
*/
wp_reset_postdata();

2
बस ध्यान दिया गया है कि यह कस्टम पोस्ट प्रकार 'Adverts' के साथ सभी पदों को खींचता है। हालाँकि यह काम करने के लिए लगता है: $ the_query = new WP_Query (सरणी ('post_type' => 'Adverts', 'advert_tag' => 'राजनीति'));
स्टीफन

@Stephen {टैक्स} को {कर_क्वायरी} के पक्ष में 3.1 के बाद से हटा दिया गया था और {tax_query} पेश किया गया था। यह अभी भी काम करता है लेकिन हमें पदावनत कार्यों का उपयोग नहीं करना चाहिए। टैक्स_क्वेरी का उपयोग टैक्सोनॉमी क्वेरी के एक सरणी के साथ किया जाता है। मैं एफएक्यू कस्टम पोस्ट प्रकार पर काम कर रहा था और यह मेरे लिए उसी तरह से काम करता था जिस तरह से {कर} टैक्सोनॉमी स्लग तर्क WP_Query में होता है।
आमेर शहजाद

16

मैं कस्टम क्वेरी (faq_category) के साथ कस्टम पोस्ट (FAQs पोस्ट) लाने के लिए इस क्वेरी का उपयोग कर रहा हूं। चूंकि WP_Query आर्ग में {taxonomy} पैरामीटर v.3.1 के बाद से हटा दिया गया था और {tax_query} पेश किया गया था। नीचे वह कोड है जो पूरी तरह से काम करता है।

$query = new WP_Query( array(
    'post_type' => 'faqs',          // name of post type.
    'tax_query' => array(
        array(
            'taxonomy' => 'faq_category',   // taxonomy name
            'field' => 'term_id',           // term_id, slug or name
            'terms' => 48,                  // term id, term slug or term name
        )
    )
) );

while ( $query->have_posts() ) : $query->the_post();
    // do stuff here....
endwhile;

/**
 * reset the orignal query
 * we should use this to reset wp_query
 */
wp_reset_query();

यह सही उत्तर है - स्वीकार किए गए उत्तर को टैक्सोनॉमी द्वारा फ़िल्टर नहीं किया जाएगा क्योंकि टैक्स_क्वेरी में सरणियों की एक सरणी की आवश्यकता होती है। यह काम करने के लिए यह नेस्टेड विधि आवश्यक है। आपके उत्तर के लिए धन्यवाद)
टॉम डायर

हाँ, आप सही हैं, आपका स्वागत है टॉम डायर
आमेर शहजाद

हां, इसने मुझे काम करने के लिए टैक्सोनॉमी टेम्पलेट प्राप्त करने में भी मदद की। धन्यवाद!
user3135691

अरे @AamerShahzad मेरे पास एक ही सवाल है और मैंने आपके उत्तर का उपयोग किया है लेकिन पेज कोई पोस्ट नहीं खींच रहा है। क्या तुमसे यहां मदद की उम्मीद की जा सकती है? stackoverflow.com/questions/55783769/…
देसी

-1

यह उत्तर अब मान्य नहीं है, क्योंकि वर्डप्रेस अपनी टैक्सोनॉमी पैरामीटर जानकारी को बदलता है। कृपया इस तरह का उपयोग करें। यह काम करेगा। इससे मेरा काम बनता है। "कर_की" "कर" से बदल जाती है। आशा है कि यह काम करेगा।

$the_query = new WP_Query( array(
    'post_type' => 'Adverts',
    'tax' => array(
        array (
            'taxonomy' => 'advert_tag',
            'field' => 'slug',
            'terms' => 'politics',
        )
    ),
) );

while ( $the_query->have_posts() ) :
    $the_query->the_post();
    // Show Posts ...
endwhile;

/* Restore original Post Data 
 * NB: Because we are using new WP_Query we aren't stomping on the 
 * original $wp_query and it does not need to be reset.
*/
wp_reset_postdata();

यह बिल्कुल विपरीत है - taxपुराना तरीका था, tax_queryवर्तमान (v3.1 +) तरीका है।
वेबइलाइन

वैसे मैं v4.5 काम कर रहा हूँ और यह मेरे साथ काम करता है
mamunuzaman

WP पीछे-संगत होने के लिए प्रसिद्ध है। पुराना तरीका अभी भी काम करता है, लेकिन इसे हटा दिया गया है, इसलिए इसे अंततः हटा दिया जा सकता है और नए तरीके का उपयोग करना सुरक्षित है।
वेबलाइन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.