কাস্টম ক্ষেত্রের অর্ডারবি মেটা_ভ্যালু সহ কাস্টম ক্যোয়ারী


37

আপনি কি জানেন, ডাব্লুপি 3.0 অনুসারে কাস্টম অ্যাডভান্সড ক্যোয়ারীগুলির জন্য বিকল্প রয়েছে, যা দুর্দান্ত। এটি হিসাবে, মেটা_কি, মেটা_ভ্যালু যেমন কাস্টম ফিল্ডগুলির কিছু ক্যোয়ারী প্যারামিটারগুলি নতুন মেটা_কিউরি প্যারামিটারের জন্য অবনমিত করা হয়েছিল ( এখানে দেখুন )

আমি নতুন সিনট্যাক্স, একটি নির্দিষ্ট পোস্ট_ টাইপ (পরিষেবাদি) দ্বারা সুনির্দিষ্ট মেটা_কি (অর্ডার_ইন_আরচাইভ) রয়েছে এমন কোয়েরি পোস্টগুলির সাথে খুব সহজ জিজ্ঞাসা করার চেষ্টা করি - এটি প্রত্যাশার সাথে ভাল চলছে। তবে - আমি মেটা_ভ্যালু দ্বারা কোয়েরিটি অর্ডার করতে চাই এবং কোনও সাফল্য ছাড়াই।

এটি আমার জিজ্ঞাসা -

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

আমি মেটা_ভ্যালু_ সংখ্যাসূচক এবং মেটা_ভ্যালু দ্বারাও অর্ডার দিয়ে চেষ্টা করেছি, তবে যে কোনও ক্ষেত্রে ফলাফল প্রকাশের তারিখ দ্বারা আদেশ করা হচ্ছে (নিয়মিত পোস্ট হিসাবে)। কেউ জানেন কীভাবে এটি করা যায়?

ধন্যবাদ

উত্তর:


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

এই সমস্যাটি সাধারণভাবে ওয়ার্ডপ্রেস ৪.২ এ নামযুক্ত প্রশ্নের ব্যবহার করে পরিষ্কার করা হয়েছে । যেমন

$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

ডাব্লুপি কোডেক্স এই সমস্যার সমাধান করার সময় আসলে বিভ্রান্ত হয়।

অর্ডারবাই ব্যবহার করার জন্য আপনার আসলে মেটা_কোয়ারী পরম প্রয়োজন নেই, পরিবর্তে এটি মেটা_কি প্যারাম ব্যবহার করে, যা ডাব্লুপি কোডেক্সের দ্বারা অবহিত হলেও এখানে প্রতিষ্ঠিত হয়েছে: ওয়ার্ডপ্রেস ৩.১-তে আপনি কীভাবে মেটা_কোয়ারির সাথে অর্ডারবাই ব্যবহার করবেন? সেই অর্ডাইবাইয়ের এখনও মেটা_কি দরকার।

সুতরাং এটি হওয়া উচিত

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

2
ঠিক আছে, হ্যাঁ, এই ক্যোয়ারিটি করার জন্য এটি পুরানো পদ্ধতি এবং এটি নির্দিষ্ট নির্দিষ্টটির জন্য কাজ করছে বলে মনে হয়। যাইহোক, আরও জটিল প্রশ্নের জন্য, এটি কাজ করবে না। আমি দেখেছি এটি একটি জ্ঞাত সমস্যা যা যত্ন নেওয়া হচ্ছে, বিশদটি ট্র্যাকের টিকিটে # 15031 এবং # 17065 তে পাওয়া যাবে
মাওর বড়জানির

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();
?>

অর্ডার_ কাস্টম ফিল ওয়ার্ডপ্রেস


1

ক্যোয়ারী_পোস্টগুলি ব্যবহার করবেন না

$meta_query = new WP_Meta_Query( $meta_query_args );

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

WP_Meta_Query পরামিতি ব্যবহার করুন


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 ব্যবহার করে, স্ট্রিং হিসাবে পাস করা, ক্যোয়ারী_পোস্টগুলি ব্যবহার করে। এটি অপসারণ করা উচিত।
ইহোর ভোরোটনভ

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);

এরপরে আপনি like পোস্টের মাধ্যমে লুপ করতে পারেন:

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'
    )));

কেবল অর্ডার_ক্লাজের জন্য কী সরবরাহ করা প্রয়োজন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.