6

このサイトには 2 つのメニューがあり、1 つはロゴの横、もう 1 つは右上にあります。

http://www.ducklingfarm.com

functions.php のこのコードを使用して作成されます。

function register_my_menus() {
register_nav_menus(
  array(
  'header-menu' => __( 'Header Menu' ),
  'extra-menu' => __( 'Extra Menu' )
)
 );
 }
add_action( 'init', 'register_my_menus' );

これはメニューを使用するための私のコードです。

<nav>
<?php wp_nav_menu(array( 'theme_location' => 'header-menu' ) ) ?>
</nav>

<nav id="ecommerce">
<?php wp_nav_menu( array( 'theme_location' => 'extra-menu' ) ); ?>
</nav>

また、「ブログ」ページの「記事」や「イベント」などのサイドバーのカテゴリに移動する場合を除いて、メニューは正常に機能します。

http://www.ducklingfarm.com/blog/

ブログ ページはカスタム投稿タイプです。カテゴリを機能させるために、functions.php にいくつかのコードを追加しましたが、それ以降、メニューが正しく機能しません。そのコードは;

add_filter('pre_get_posts', 'query_post_type');
function query_post_type($query) {
if(is_category() || is_tag()) {
$post_type = get_query_var('post_type');
if($post_type)
    $post_type = $post_type;
else
    $post_type = array('post','Blog');
$query->set('post_type',$post_type);
return $query;
}
}

したがって、コードに何か問題があると思います。私を助けてください!本当にありがたいです。

最高、ジェウン

最後のコードをこれに変更して解決しました。

add_filter('pre_get_posts', 'query_post_type');
function query_post_type($query) {
if(is_category()  && $query->is_main_query()) {
$post_type = get_query_var('post_type');
if($post_type)
    $post_type = $post_type;
else
    $post_type = array('post','Blog');
$query->set('post_type',$post_type);
return $query;
}
}
4

2 に答える 2

8

これを試すことができます(複数のifandは必要ありません$post_type = $post_type;

add_filter('pre_get_posts', 'query_post_type');
function query_post_type($query) {
    if(is_category()  && $query->is_main_query()) {
        $query->set( 'post_type', array( 'post', 'Blog' ) );
    }
    return $query;
}
于 2013-10-05T10:56:53.630 に答える