반응형
Class current_page_item 추가 중
워드프레스 디자인 작업을 하고 있는데 사용자 정의 메뉴를 만들고 싶습니다.
$items = wp_get_nav_menu_items('Menu', array(
'order' => 'ASC',
'orderby' => 'menu_order',
'post_type' => 'nav_menu_item',
'post_status' => 'publish',
'output' => ARRAY_A,
'output_key' => 'menu_order',
'nopaging' => true,
'update_post_term_cache' => false));
echo '<pre>'; print_r($items); echo '</pre>';
foreach($items as $item){
echo '<div class="menu_entry"><a href="'.$item->url.'">'.$item->title.'</a></div>';
}
문제는 표준 메뉴에서 워드프레스 생성인 "현재 페이지" 클래스가 필요하다는 것입니다.
이 수업을 추가하는 방법에 대한 아이디어가 있습니까?
솔루션 시간:
이 클래스들을 추가하는 워드프레스의 기능은.를 사용할 때 이미 호출됩니다.wp_nav_menu
그러나 그렇지는wp_get_nav_menu_items
. 다행히 후자는 필터를 제공하여 우리가 직접 할 수 있습니다.
add_filter( 'wp_get_nav_menu_items', 'prefix_nav_menu_classes', 10, 3 );
function prefix_nav_menu_classes($items, $menu, $args) {
_wp_menu_item_classes_by_context($items);
return $items;
}
페이지/category 등의 ID인 메뉴항목 object_id와 현재 페이지/category ID를 비교하시면 됩니다.
(검증되지 않은) 것과 같은 것;
global $post;
$thePostID = $post->ID;
foreach($items as $item){
if($thePostID === $item->object_id) {
echo '<div class="menu_entry"><a href="'.$item->url.'" class="current-menu-item">'.$item->title.'</a></div>';
}else{
echo '<div class="menu_entry"><a href="'.$item->url.'">'.$item->title.'</a></div>';
}
}
기능을 이용해서.블로그 페이지를 포함한 모든 페이지에서 정상적으로 작동합니다.
예제 참조:
if ( $menu_items = wp_get_nav_menu_items( 'menu' ) ) {
foreach ( $menu_items as $menu_item ) {
$current = ( $menu_item->object_id == get_queried_object_id() ) ? 'current' : '';
echo '<li class="' . $current . '"><a href="' . $menu_item->url . '">' . $menu_item->title . '</a></li>';
}
}
언급URL : https://stackoverflow.com/questions/10019493/adding-class-current-page-item
반응형
'itsource' 카테고리의 다른 글
PACKET_MMAP 및 PACKET_TX_RING을 사용한 데이터 전송 속도가 "정상"보다 느림(없음) (0) | 2023.10.29 |
---|---|
도커 파일을 사용하여 로컬 wp-content 파일을 Wordpress 컨테이너에 복사하는 방법 (0) | 2023.10.29 |
ASP에서 NuGet 패키지 위치는 어디입니까?NET Core? (0) | 2023.10.29 |
Win32 API에서 Posix popen()에 해당하는 것은? (0) | 2023.10.29 |
자바스크립트를 사용하여 브라우저 버전과 운영체제를 탐지하는 방법은? (0) | 2023.10.29 |