質問: ウコマズマカスタム共有分類法 私はwoocommerceからのseason型と私のカスタム型productにカスタム共有分類法careを追加しました。私のカスタムテーマのfunctions.phpファイルにcare型と分類法が作成されています。add_action('init', function() { register_post_type('care', array( 'labels' => array( 'name' => __('cares'), 'singular_name' => __('care'), ), 'menu_position' => 4, 'public' => true, 'show_ui' => true, 'has_archive' => true, 'publicly_queryable' => true, 'supports' => array('title') )); register_taxonomy( 'season', array('product', 'care'), array( 'label' => __('season'), 'show_ui' => true, 'hierarchical' => true, ) ); }); season分類法の用語にアクセスすると、渡されたpost_typeに関係なく、常にwoocommerce製品アーカイブにアクセスします。つまり、 http://example.com/?season=helloworld&post_type=product および http://example.com/?season=helloworld&post_type=care は、woocommerce製品アーカイブと同じページにアクセスします。ウーコマースに分類法を正しく共有させる方法は?p.s wordpress 3.8.1とwoocommerce 2.0.20を使用する。明示的な書き換え規則は追加されていません。
回答: この問題に対する解決策が見つかりました。別のpost_typeが要求されたことを確認せずに、woocommerceがpre_get_postsフィルタのpost_typeクエリ変数に影響を与えることがわかりました。それはwc_query.product_queryメソッドで行われます。if ( ! $q->is_tax( 'product_cat' ) && ! $q->is_tax( 'product_tag' ) ) $q->set( 'post_type', 'product' ); この問題の修正は簡単です。 product_queryメソッドの最初にproduct投稿タイプが実際に要求されていることを確認するだけです。// check that product post type has been requested if ($q->get('post_type') != 'product') return; その後はすべてうまくいきます。更新:修正はwoocommerceマスターブランチにマージされました: https://github.com/woothemes/woocommerce/pull/4582 .