web-dev-qa-db-ja.com

カスタムメタフィールドで用語アーカイブをソートするようにtaxonomy-custom.phpのクエリを変更する方法

アーカイブがカスタムメタフィールドによって順序付けされているカスタム分類用語のテーマページを作成しようとしています。

次のように新しいwp_queryを使ってこれを行うことができます。

        <?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(); ?>

しかし、私はこれをtaxonomy-custom.phpページで作業して、個々の分類学用語のアーカイブページがカスタムミートフィールドに従ってリストされるようにする必要があります(「姓」と呼ばれます)。 wp_queryを使用した場合、もちろんそれは機能しません。なぜなら、それはもはやそれぞれの特定の用語についての結果を表示しないからです。

私もpre_get_postsを使ってこれをやろうとしました、しかしそれをうまく動かすこともできません。私が期待しているのは、アーカイブページという用語にリストされているすべての投稿が、姓メタキーの昇順でリストされるということです。そうではありません。代わりに、pre_get_postがない場合と同じ順序で一覧表示されています。私が使ったコードは次のとおりです。

<?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' );

?>

誰かが手助けできることを本当に願っています。

御時間ありがとうございます。

アンドリュー.

4
Andrew Brown

Pre_get_postsフィルタは、ループがtaxonomy-services.phpで始まる直前です。

手遅れです。メインクエリはテンプレートがロードされるずっと前に実行されます。あなたのpre_get_postsフィルタをあなたのテーマのfunctions.php、あるいはプラグインもしくはMU-Pluginファイルに移動すれば、違いがわかります。

6
s_ha_dum