मैं पोस्ट लूप से कस्टम टैक्सोनॉमी को कैसे निकालूं


22

क्या सभी पोस्ट को लूप में कस्टम टैक्सोनॉमी से बाहर करने का एक सरल या आसान तरीका है? मैं ऊँचा और नीचा देख रहा हूँ, और न ही एसई, एसओ या गूगल को सीधा जवाब लगता है।

मुझे पता है कि यह WPDB क्वेरी के माध्यम से किया जा सकता है, लेकिन ऐसा लगता है कि कुछ के लिए कूदने के लिए बड़े पैमाने पर रस्सी की तरह है जो काफी सरल होना चाहिए।


5
कोई भी पोस्ट जिसमें उस वर्गीकरण में कोई शब्द हैं, या आप अपने कस्टम टैक्सोनॉमी के किसी विशेष शब्द का उल्लेख कर रहे हैं? उदाहरण: यदि मेरी करंसी फल है और मेरे पास दो पद हैं, सेब और नारंगी, तो क्या मैं उन सभी पोस्टों को बाहर करना चाहूंगा जिनमें फल हैं, या सिर्फ सेब हैं?
t31os

@ t31os का विस्तार करने के लिए Q: post_tag, श्रेणी, link_category, आदि सभी _builtin वर्गीकरण हैं। इसलिए, भले ही आप पोस्ट टैग को "शब्द" कहें, यह अभी भी केवल एक वर्गीकरण (गैर-श्रेणीबद्ध) है और "श्रेणी" (श्रेणीबद्ध) कर के रूप में समान "स्तर" पर है।
कैसर

@ T31os उदाहरण जारी रखने के लिए: मैं उन सभी पोस्टों को बाहर करने की कोशिश कर रहा हूं जो टैक्सोनॉमी फलों में हैं (चाहे वे 'सेब', 'नाशपाती' या 'संतरे' हों)।
थॉमस

जवाबों:


13

आप NOT EXISTSटैक्सोनॉमी स्लग को पारित करने के साथ-साथ ऑपरेटर का उपयोग करना चाहेंगे , जो क्वेरी को लूप के अंदर अपने कस्टम टैक्सोनॉमी से किसी भी चुने हुए श्रेणी में शामिल नहीं करने के लिए कहता है।

उन सभी पदों को बाहर करने के लिए जो टैक्सोनॉमी "फल" (फल की तरह की परवाह किए बिना) में हैं, यहाँ स्निपेट है:

$args = array(
    'post_type'      => 'post',
    'tax_query'      => array(
        array(
            'taxonomy' => 'fruit',
            'operator' => 'NOT EXISTS'
        )
    )
);

$query = new WP_Query( $args );

2
ऐसा लग रहा है कि यह NOT INXX नंबर की तुलना में अधिक कुशल होना चाहिए terms। शब्दों की सूची एक बड़े आकार में विकसित हो सकती है, लेकिन यह सभी शर्तों को उस वर्गीकरण के नाम के साथ कवर करना चाहिए।
इटलीसोदा

जबकि यह ओपी के प्रश्न (उत्कीर्ण) का उत्तर है, हम में से अधिकांश शायद एक विशिष्ट शब्द या शब्दों को सेट करना चाहते हैं। उसके लिए, आपको यह उत्तर चाहिए
rinogo

26

इसका समाधान वास्तव में प्रचारित नहीं है, लेकिन यह होना चाहिए।

आप निम्न कार्य कर सकते हैं:

$args['tax_query'] = array(
    array(
        'taxonomy' => 'category',
        'terms' => array('cat', 'dog'),
        'field' => 'slug',
        'operator' => 'NOT IN',
    ),
);
query_posts($args);

ऑपरेटर तर्क अन्य शर्तों को ले सकता है, लेकिन उपरोक्त कोड मूल रूप से कह रहा है कि सभी पदों को वर्गीकरण 'श्रेणी' से प्राप्त करें जिसमें 'बिल्ली' या 'कुत्ता' शब्द नहीं हैं।


चतुर। लेकिन तब मुझे अभी भी उस टैक्सोनॉमी में हर शब्द को मैन्युअल रूप से दर्ज करना होगा, सही?
थॉमस

मैं तुम्हें माफ नहीं कर रहा हूँ। शब्दों की सरणी में, आप उन टर्म वैल्यू को परिभाषित करते हैं, जिन्हें आप अपनी लूप क्वेरी से बाहर करना चाहते हैं। यदि आप चाहते थे कि वे गतिशील हों, तो आप शायद प्रत्येक पोस्ट में एक कस्टम मेटा मान जोड़ सकते हैं और फिर अपनी क्वेरी में उस मेटा कुंजी के मूल्य की जांच कर सकते हैं और इसे इस तरह सेट कर सकते हैं यदि आपका मतलब है।
ड्वेन चारिंगटन

आह। मैं देख रहा हूं कि आपका क्या मतलब है, लेकिन यह वास्तव में बोझिल है।
थॉमस

मैंने वास्तव में नहीं देखा है, लेकिन निश्चित रूप से एक प्लगइन होना चाहिए जो वह करता है जो आप तब पूछ रहे हैं?
ड्वेन चारिंगटन

8

कस्टम पोस्ट प्रकार और कस्टम टैक्सोनॉमी के लिए यह कैसे करें:

$happening = new WP_Query(
array( 
  'post_type'  => 'news',        // only query News post type
  'tax_query' => array(
    array(
        'taxonomy'  => 'news-cat',
        'field'     => 'slug',
        'terms'     => 'media', // exclude items media items in the news-cat custom taxonomy
        'operator'  => 'NOT IN')

        ),
   )
);

इसने कस्टम पोस्ट प्रकार से कस्टम टैक्सोनॉमी को बाहर करने के लिए पूरी तरह से काम किया .. बस स्निपेट को समाप्त करने के लिए क्वेरी लूप कोड जोड़ना चाहता था: जबकि ($ the_query-> has_posts ()): $ the_query-> the_post ();


0

मैंने निम्नलिखित पदों को एक निश्चित वर्गीकरण अवधि से बाहर करने के लिए किया था:

$argos = array( 
    'tax_query' =>  array (
        array(
            'taxonomy' => 'topics', // My Custom Taxonomy
            'terms' => 'college', // My Taxonomy Term that I wanted to exclude
            'field' => 'slug', // Whether I am passing term Slug or term ID
            'operator' => 'NOT IN', // Selection operator - use IN to include, NOT IN to exclude
        ),
    ),
    'post_type'=>'page', // Post type I want to show, can be a custom post type too
    'posts_per_page' => -1,
    'orderby' => 'title',
    'order'=>'ASC',
    'post_parent' =>$post->ID // show child posts or pages of current page/post
); 

$query = new WP_Query( $args );

0
query_posts( array(
    'post_type' => 'listings',
    'tax_query' => array(
        array(
            'taxonomy' => 'status',
            'field'    => 'slug',
            'terms'    => 'sold',
            'operator' => 'NOT IN'
            ),
        )
    )
);

यह कोड स्थिति => पोस्ट_टाइप => लिस्टिंग से बेचा गया है


-1

मैं "RYO 'श्रेणी दृश्यता' वर्डप्रेस प्लगइन" का उपयोग करता हूं जो बहुत अच्छा काम करता है।

आप एक व्यवस्थापक पृष्ठ पर निर्णय ले सकते हैं कि कौन सी श्रेणियां विभिन्न क्षेत्रों से दिखाई या बहिष्कृत हैं।

http://ryowebsite.com/wp-plugins/category-visibility/

-Adam


4
यह मुझे लगता है कि ऐसा करने के लिए एक अतिरिक्त प्लगइन स्थापित करने के लिए शीर्ष पर है। मैं अपनी निर्भरता कम से कम रखना चाहता हूं और निश्चित रूप से इसके लिए एक तरीका होना चाहिए।
थॉमस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.