0

以前に使用pre_get_postsしたfunctions.phpことがあり、魅力的に機能しますが、何らかの理由で、私が持っている WooCommerce ページで機能しない理由がわかりませんarchive-product.php

ディレクトリ構造:

.
├──woocommerce
|   ├── archive-product.php
├── functions.php

内部functions.php:

function specific_category( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( 'cat', '7815' );
    }
}
add_action( 'pre_get_posts', 'specific_category' );

内部archive-product.php:

var_dump($wp_query); //this should be the main query variable but doesn't exist.

次に、これを内部で試しましたarchive-product.php

global $wp_query;

foreach($wp_query->posts as $k){
    print_r($k);
    echo "<br>";
    echo "<br>";
}

functions.php投稿を出力しますが、投稿はコードで設定されたカテゴリに関連していません$query->set( 'cat', '7815' );

質問:宣言する必要があるのはなぜですかglobal $wp_query(デフォルトでは初期化する必要があります)、選択したカテゴリからの投稿がないのはなぜですか?

4

1 に答える 1