कस्टम फ़ील्ड के क्रम में मेटा_वल्यू के साथ कस्टम क्वेरी


37

Aa आप जानते हैं, WP3.0 के रूप में कस्टम उन्नत प्रश्नों के लिए विकल्प हैं, जो बहुत अच्छा है। इसके अनुसार, मेटा_की, मेटा_वल्यू जैसे कस्टम फ़ील्ड के कुछ क्वेरी पैरामीटर नए मेटा_क्वेरी पैरामीटर ( यहाँ देखें ) के लिए पदावनत किए गए थे

मैं नए सिंटैक्स के साथ एक बहुत ही सरल क्वेरी करने की कोशिश करता हूं, एक निश्चित पोस्ट_टाइप (सेवाओं) द्वारा क्वेरी पोस्ट जिसमें एक निर्दिष्ट मेटा_की (ऑर्डर_इन_आर्किव) होता है - यह अच्छी तरह से अपेक्षित है। लेकिन - मैं meta_value द्वारा क्वेरी का आदेश देना चाहता हूं, और कोई सफलता नहीं है।

यह मेरा प्रश्न है -

   query_posts(
    array(  'post_type' => 'services',
        'order' => 'ASC',
        'orderby' => 'meta_value',
        'meta_query' => array(
            array('key' => 'order_in_archive'))
    )
);

मैंने meta_value_numeric और meta_value द्वारा भी ऑर्डर करने की कोशिश की, लेकिन किसी भी स्थिति में परिणाम प्रकाशन तिथि (जैसा कि नियमित पोस्ट करते हैं) द्वारा आदेश दिए जा रहे हैं। किसी को पता है कि यह कैसे किया जा सकता है?

धन्यवाद

जवाबों:


35

आप पुरानी विधि का उपयोग करके आर्डर पैरामीटर के लिए मेटा कुंजी को परिभाषित कर सकते हैं (मैंने WP 3.1.1 पर परीक्षण किया है ...)

query_posts(
    array(  'post_type' => 'services',
            'order'     => 'ASC',
            'meta_key' => 'some_key',
            'orderby'   => 'meta_value', //or 'meta_value_num'
            'meta_query' => array(
                                array('key' => 'order_in_archive',
                                      'value' => 'some_value'
                                )
                            )
    )
);

15

नामांकित प्रश्नों का उपयोग करके वर्डप्रेस 4.2 में सामान्य रूप से इस मुद्दे को साफ कर दिया गया है। जैसे

$args = array(
  'post_type' => 'services',
  'orderby'   => 'order_clause',
  'meta_query' => array(
       'order_clause' => array(
            'key' => 'order_in_archive',
            'value' => 'some_value',
            'type' => 'NUMERIC' // unless the field is not a number
)));

मेरे लिए, मैं एक संख्यात्मक क्षेत्र द्वारा ऑर्डर करना चाहता था और मुझे 'type' => 'NUMERIC'मेटा क्वेरी के अंदर उपयोग करना था ।


1
नामित प्रश्नों पर भयानक खोज!
काजी

हां, नामित प्रश्नों ने मेरे लिए भी सवाल का जवाब दिया।
डाल्टन

अति उत्कृष्ट। मुझे यकीन नहीं है कि उस ऑर्डर_क्लाज़ में 'मूल्य' का महत्व है क्योंकि इसकी आवश्यकता नहीं है क्योंकि यह 'ऑर्डर_इन_आर्काइव' के उच्चतम से निम्नतम मूल्य तक ऑर्डर करेगा।
एंड्रयू

10

इस समस्या को संबोधित करते समय WP कोडेक्स वास्तव में भ्रमित है।

आपको ऑर्डरबाई का उपयोग करने के लिए वास्तव में meta_query param की आवश्यकता नहीं है, इसके बजाय यह meta_key param का उपयोग करता है, हालांकि WP कोडेक्स द्वारा पदावनत किया गया है, यहाँ स्थापित किया गया है: आप Wordpress 3.1 में मेटाक्लेरी के साथ क्रम का उपयोग कैसे करते हैं? उस क्रम को अभी भी मेटा_की जरूरत है।

तो यह होना चाहिए

query_posts( array(
  'post_type' => 'services',
  'order' => 'ASC',
  'orderby' => 'meta_value',
  'meta_key' => 'order_in_archive'
) )

2
ठीक है, हाँ, इस क्वेरी को करने के लिए यह पुरानी विधि है और यह इस निर्दिष्ट के लिए काम करता प्रतीत होता है। वैसे भी, अधिक जटिल प्रश्नों के लिए, यह काम नहीं करेगा। मैंने पाया कि यह एक ज्ञात मुद्दा है जिस पर ध्यान दिया जा रहा है, विवरण ट्रेस टिकट # 15031 और # 17065
Maor Barazany

2

यह आसान है:

यहाँ मेरा कोड है:

query_posts(array( 
        'post_type' => 'directors',
        'posts_per_page' => -1,
        'order'    => 'ASC',
        'orderby'  => 'director_weight',
        'meta_key' => 'director_weight'
) );

मुख्य विवरण यह है: शामिल करें meta_key, जब तक मेरा कोड meta_keyशामिल नहीं किया जाता है, और यह सब है:

यहाँ directorsचित्रों के क्रम की एक सूची का पूरा कोड है director_weight:

<?php 
    query_posts(array( 
        'post_type' => 'directors',
        'posts_per_page' => -1,
        'order'    => 'ASC',
        'orderby'  => 'director_weight',
        'meta_key' => 'director_weight'
    ) );
    while (have_posts()) : the_post();
?>  
    <li <?php echo get_field('director_weight') ?>>
        <img src="<?php echo get_field('director_imagen') ?>">
    </li>
<?php
    endwhile;
    wp_reset_query();
?>

order_by custom fiel wordpress



0

मुझे यह अच्छी तरह से काम करने के लिए मिला।

<?php 
query_posts(
array(  'posts_per_page' => '-1',
        'post_type' => 'services',
        'order'     => 'DESC',
        'meta_key' => '_order',
        'orderby'   => 'meta_value_num', //or 'meta_value_num'
      )
);

3
सवाल नए-ईश meta_queryपैरामीटर के orderbyबारे में है और इसके साथ काम करने के लिए और पुराने और अभी भी कार्यात्मक meta_key/ meta_valueमापदंडों के बारे में नहीं है । इसके अलावा, के उपयोग को प्रोत्साहित नहीं करते हैं query_posts
s_ha_dum

इस उत्तर में कई बुरी प्रथाएं हैं: -1 का उपयोग करके, इसे स्ट्रिंग के रूप में पास करना, query_posts का उपयोग करना। इसे हटाया जाना चाहिए।
इहोर वोटरनोव

0

मेरे पास कस्टम इवेंट तिथियों का एक सेट था जिसे मुझे नीचे उतरने की तिथि के आधार पर क्रमबद्ध करना था। चूंकि मेरे कस्टम इवेंट की तारीख मेरी wp_postmeta तालिका में संग्रहीत की गई थी, और आमतौर पर पोस्ट_डेट या संशोधित तिथियों के लिए अलग थी, इसलिए मेरे लिए यह काम किया:

  $args = array(
    'post_type' => 'events', // my post type - yours can be 'posts'
    'post_status' => 'publish', // only get posts with this status
    'orderby' => 'meta_value', // orderby the meta_value of the following meta_key
    'meta_key' => 'my_custom_eventdate', // the custom meta_key name
    'order'=> 'DESC' // sort descending
  );

  $posts = new WP_Query($args);

आप $ पोस्ट के माध्यम से लूप कर सकते हैं जैसे:

foreach($posts->posts as $p){

    $post_id = $p->ID;
    // and so on ...

    // # example of how I retrieve my event date
    $event = get_post_meta($post_id, 'my_custom_eventdate', true);
}

0

यह काम मेरे लिए,

    $args = array(
        'post_type' => 'services',
        'order' => 'ASC',
        'orderby'   => 'order_clause',   
        'meta_query' => array(
        'order_clause' => array(
        'key' => 'order_in_archive'
    )));

केवल order_clause के लिए कुंजी प्रदान करने की आवश्यकता है

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