it-swarm.com.de

Wie ändere ich die Abfrage in taxonomy-custom.php, um Termarchive nach einem benutzerdefinierten Metafeld zu sortieren?

Ich versuche, Themenseiten für benutzerdefinierte Taxonomiebegriffe zu erstellen, in denen die Archive nach einem benutzerdefinierten Metafeld sortiert sind.

Ich kann das mit einer neuen wp_query wie folgt machen:

        <?php $directory_archive_query = new WP_Query( 
            array( 
                'post_type' => 'directory',
                'posts_per_page' => 200,
                'meta_key' => 'surname',
                'orderby' => 'meta_value',
                'order' => 'ASC' ) ); ?>    

            <?php while($directory_archive_query->have_posts()) : $directory_archive_query->the_post(); ?>

Ich benötige dies jedoch, um auf der taxonomy-custom.php-Seite arbeiten zu können, damit die Archivseite jedes einzelnen Taxonomiebegriffs gemäß dem benutzerdefinierten Fleischfeld ("Nachname" genannt) aufgelistet wird. Wenn ich die wp_query verwende, funktioniert das natürlich nicht, weil es nicht mehr Ergebnisse für jeden bestimmten Begriff anzeigt.

Ich habe auch versucht, dies mit pre_get_posts zu tun, aber ich kann das auch nicht zum Laufen bringen. Was ich erwarte, ist, dass alle auf der Termarchivseite aufgelisteten Beiträge in aufsteigender Reihenfolge nach dem Metaschlüssel des Nachnamens aufgelistet werden. Das passiert nicht. Stattdessen werden sie in derselben Reihenfolge aufgelistet, als ob keine pre_get_posts vorhanden wären. Der Code, den ich verwendet habe, ist wie folgt:

<?php 

    function customize_customtaxonomy_archive_display ( $query ) {
        if (($query->is_main_query()) && (is_tax('services')))

        $query->set( 'post_type', 'directory' );                 
        $query->set( 'posts_per_page', '200' );
        $query->set( 'meta_key', 'surname' );           
        $query->set( 'orderby', 'meta_value' );
        $query->set( 'order', 'ASC' );
    }

     add_action( 'pre_get_posts', 'customize_customtaxonomy_archive_display' );

?>

Ich hoffe wirklich, dass jemand helfen kann.

Vielen Dank für Ihre Zeit.

Andrew.

4
Andrew Brown

Der pre_get_posts-Filter befindet sich unmittelbar vor dem Beginn der Schleife in taxonomy-services.php

Das ist zu spät Die Hauptabfrage wird lange vor dem Laden Ihrer Vorlage ausgeführt. Verschieben Sie Ihren pre_get_posts-Filter in den functions.php Ihres Themas oder in ein Plugin oder eine MU-Plugin-Datei, und Sie sollten den Unterschied sehen.

6
s_ha_dum