recherche

Maison  >  Questions et réponses  >  le corps du texte

Méthode de filtrage "orderby" (ASC et DESC) de WP_Query à l'aide de meta_query

<p>J'essaie de filtrer les publications par 'DESC' à l'aide des métadonnées personnalisées 'like_count_on_post', puis de collecter tous les 'like_count_on_post' et 'dislike_count_on_post' vides et enfin de les trier par 'ASC' de 'dislike_count_on_post' mais je ne peux obtenir que des likes. par ordre décroissant, ou si je supprime : </p> <blockquote> <p>'custom_field_value' => 'DESC'</p> </blockquote> <p>Je peux obtenir l'ordre croissant par étape, mais pas les deux en même temps. </p> <p>Code du paramètre de requête : </p> <pre class="brush:php;toolbar:false;">$args = array( 'post_status' => 'publier', 'post_type' => 'sveikinimai', 'meta_query' => tableau( "relation" => "et", 'j'aime' => tableau ( "relation" => "ou", 'custom_field_value' => 'clé' => '_like_count_on_post_', ), 'custom_field' => tableau( 'clé' => '_like_count_on_post_', 'comparer' => 'N'EXISTE PAS', ), ), 'n'aime pas' => tableau( "relation" => "ou", 'custom_field_value_2' => 'key' => '_dislike_count_on_post_', ), 'custom_field_2' => 'key' => '_dislike_count_on_post_', 'comparer' => 'N'EXISTE PAS', ), ), ), 'orderby' => tableau ( 'custom_field_value' => 'DESC', 'custom_field_value_2' => 'ASC' ), 'posts_per_page' => 'paginé' => $paginé, );</pré> <p>Mise à jour, si vous souhaitez filtrer les champs de métadonnées inexistants, voici le code : </p> <pre class="brush:php;toolbar:false;">$args = array( 'post_status' => 'publier', 'post_type' => 'sveikinimai', 'meta_query' => tableau ( "relation" => "et", 'custom_field_value' => 'clé' => '_like_count_on_post_', ), 'custom_field_value_2' => 'key' => '_dislike_count_on_post_', ), ), 'orderby' => tableau ( 'custom_field_value' => 'DESC', 'custom_field_value_2' => 'ASC' ), 'posts_per_page' => 'paginé' => $paginé, );</pre></p>
P粉007288593P粉007288593450 Il y a quelques jours614

répondre à tous(1)je répondrai

  • P粉471207302

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

    Pour résoudre le problème, j'ai ajouté les champs méta 'like_count_on_post' et 'dislike_count_on_post' à toutes les publications. Le filtre fonctionne bien, je ne pense pas qu'il se résolve lorsque les champs sont vides, mais voici le code pour que ces champs ne soient pas vides :

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

    répondre
    0
  • Annulerrépondre