web-dev-qa-db-fra.com

Filtre archive.php par méta personnalisé

J'essaie de filtrer une page d'archive par une méta requête personnalisée.

J'ai essayé d'utiliser query_posts($args) avant la boucle, mais cela ne renvoie rien. Des idées?

Voici ce que j'ai jusqu'à présent:

<?php 
        //$wolfName = $_GET['wolfName'];
        $archiveArgs = array(
                        'meta_key'  => 'wolf',
                        'meta_value'    => 'boltz'
                        );
        query_posts($archiveArgs);
        ?>
        <?php if (have_posts()) : ?>

Il ne renvoie aucun message ... aucune idée?

3
Troy

Utiliser le crochet d'action pre_get_posts

function archive_meta_query( $query ) {
    if ( $query->is_archive){
      $query->query_vars["meta_key"] = 'wolf';
      $query->query_vars["meta_value"] = 'boltz';
    }
}
add_action( 'pre_get_posts', 'archive_meta_query', 1 );
7
Strik3r

merci pour votre code Strik3r ..cela m'a beaucoup aidé..J'ai enfin réussi à trier par champ personnalisé pour travailler ... dans functions.php

function sort_meta_query( $query ) {
 if ( $query->is_archive || $query->is_category || $query->is_home ){
  $query->query_vars["meta_key"] = 'fastest_speed_experienced';
  $query->query_vars["orderby"] = 'meta_value_num';
 }
}
  add_action( 'pre_get_posts', 'sort_meta_query', 1 );
0
user2671457