cari

Rumah  >  Soal Jawab  >  teks badan

Kaedah untuk penapisan "orderby" (ASC dan DESC) WP_Query menggunakan meta_query

<p>Saya cuba menapis siaran mengikut 'DESC' menggunakan metadata tersuai 'like_count_on_post' dan kemudian kumpulkan semua kosong 'like_count_on_post' dan 'dislike_count_on_post' dan akhirnya mengisih mengikut 'ASC' daripada 'dislike_count_on_post' tetapi saya hanya boleh Mendapatkan suka dalam tertib menurun, atau jika saya memadamkan: </p> <blockquote> <p>'nilai_bidang_suai' => 'DESC'</p> </blockquote> <p>Saya boleh mendapatkan tertib menaik mengikut langkah, tetapi bukan kedua-duanya pada masa yang sama. </p> <p>Kod parameter pertanyaan: </p> <pre class="brush:php;toolbar:false;">$args = array( 'post_status' => 'terbitkan', 'post_type' => 'sveikinimai', 'meta_query' => tatasusunan( "hubungan" => 'suka' => array( "hubungan" => 'nilai_bidang_suai' => 'kunci' = > '_suka_kira_pada_siaran_', ), 'custom_field' => array( 'kunci' = > '_suka_kira_pada_siaran_', 'compare' => 'TIDAK WUJUD', ), ), 'tidak suka' => tatasusunan( "hubungan" => 'custom_field_value_2' => 'key' => '_tidak suka_kira_pada_siaran_', ), 'custom_field_2' => 'key' => '_tidak suka_kira_pada_siaran_', 'compare' => 'TIDAK WUJUD', ), ), ), 'orderby' => array( 'custom_field_value' => 'DESC', 'custom_field_value_2' => 'ASC' ), 'posts_per_page' => 'paged' => $paged, );</pra> <p>Kemas kini, jika anda ingin menapis medan metadata yang tidak wujud, berikut ialah kodnya: </p> <pre class="brush:php;toolbar:false;">$args = array( 'post_status' => 'terbitkan', 'post_type' => 'sveikinimai', 'meta_query' => tatasusunan( "hubungan" => 'nilai_bidang_suai' => 'kunci' = > '_suka_kira_pada_siaran_', ), 'custom_field_value_2' => 'key' => '_tidak suka_kira_pada_siaran_', ), ), 'orderby' => array( 'custom_field_value' => 'DESC', 'custom_field_value_2' => 'ASC' ), 'posts_per_page' => 'paged' => $paged, );</pre></p>
P粉007288593P粉007288593450 hari yang lalu616

membalas semua(1)saya akan balas

  • P粉471207302

    P粉4712073022023-09-02 12:20:29

    Untuk menyelesaikan masalah, saya menambahkan medan meta 'suka_kira_pada_siaran' dan 'tidaksuka_kira_pada_siaran' pada semua siaran. Penapis berfungsi dengan baik, saya rasa ia tidak dapat diselesaikan apabila medan kosong, tetapi berikut ialah kod untuk menjadikan medan ini tidak kosong:

    add_action('save_post', 'add_post_custom_meta'); 
    function add_post_custom_meta() {
      global $post;
      $post_id  = $post->ID;
    
      update_post_meta($post_id, '_like_count_on_post_', 0);
      update_post_meta($post_id, '_dislike_count_on_post_', 0);
    }

    balas
    0
  • Batalbalas