source

Wordpress pre_get_posts 범주 필터가 사용자 지정 메뉴 항목을 제거합니다.

manysource 2023. 2. 12. 18:09

Wordpress pre_get_posts 범주 필터가 사용자 지정 메뉴 항목을 제거합니다.

이 사이트에는 두 가지 메뉴가 있습니다.하나는 로고 옆에 있고 다른 하나는 오른쪽 상단에 있습니다.

http://www.ducklingfarm.com

함수에서 이 코드를 사용하여 생성됩니다.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;
}
}

이것을 시험해 보세요(복수가 필요 없음).if그리고.$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;
}

물건을 사용하기 전에 다음 조건을 확인하십시오.

  if ($query->get('post_type') == 'nav_menu_item')
    return $query;

다음과 같습니다.

    function wp32151_search_filter($query)
{
    if ($query->get('post_type') == 'nav_menu_item')
        return $query;

    if ($query->is_search) {
        $query->set('post_type', 'shows');
    } 

    return $query;
}

add_filter('pre_get_posts', 'wp32151_search_filter');

언급URL : https://stackoverflow.com/questions/19194462/wordpress-pre-get-posts-category-filter-removes-custom-menu-items