it-swarm.com.de

Filtern Sie archive.php nach benutzerdefinierten Metas

Ich versuche, eine Archivseite nach einer benutzerdefinierten Metaabfrage zu filtern.

Ich habe versucht, query_posts($args) vor der Schleife zu verwenden, aber es gibt nichts zurück. Irgendwelche Ideen?

Folgendes habe ich bisher:

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

Es werden keine Beiträge zurückgegeben ... irgendwelche Ideen?

3
Troy

Verwenden Sie den Aktions-Hook 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

danke für deinen Code Strik3r .. das hat mir sehr geholfen..Ich habe endlich das Sortieren nach benutzerdefinierten Feldern zum Laufen gebracht ... in 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