사용자 지정 메뉴 항목을 워드프레스 메뉴의 맨 앞/맨 뒤에 추가하기

메뉴의 맨 끝(혹은 맨 앞)에 사용자 지정 항목(가령 PHP 코드나 특정 문구 등)을 추가할 수 있습니다. 이 글에서 설명하는 내용은 기본적으로 내비게이션 메뉴에 로그인/로그아웃 메뉴 항목을 추가하는 방법과 동일합니다.

[ 이 글은 2022년 12월 13일에 최종 업데이트되었습니다. ]

사용자 지정 메뉴 항목을 워드프레스 메뉴의 맨 앞/맨 뒤에 추가하기

사용자 지정 메뉴 항목을 워드프레스 메뉴의 맨 앞/맨 뒤에 추가하기

다음 함수를 테마 함수에 추가하면 위의 그림과 같이 메뉴 끝에 대한민국의 시간을 표시할 수 있습니다.

add_filter('wp_nav_menu_items','add_todaysdate_in_menu', 10, 2);
function add_todaysdate_in_menu( $items, $args ) {
if( $args->theme_location == 'header-menu')  {
$korean_time = date("g:i A", strtotime(" + 9 hours"));
$items .=  '<li style="background: beige;">' . $korean_time .  ' (서울)</li>';

}
return $items;
}

위에서 theme_location은 해당 메뉴의 위치로 바꾸어야 합니다. 잘 모르는 경우 함수 파일에서 register_nav_menu 부분을 찾아보면 theme_location을 알 수 있습니다. 그리고 위의 경우에는 새로운 메뉴 위치(header-menu)를 함수 파일에 등록한 경우의 예입니다. (새로운 사용자 지정 메뉴 추가 방법은 여기를 참고하시기 바랍니다.)

위의 코드를 자세히 보시면 조건문이 사용되어 있습니다. 이것을 응용하여 로그인 사용자와 게스트 사용자에 따라 다르게 표시되는 메뉴를 추가할 수 있습니다. 가령 위의 조건문을 아래와 같이 바꾸면 게스트에게는 "로그인" 메뉴가 표시되고 로그인 사용자에게는 "로그아웃" 메뉴가 표시됩니다.

if (is_user_logged_in() && $args->theme_location == 'primary') {
$items .= '<li><a href="'. wp_logout_url() .'">로그아웃</a></li>';
}
elseif (!is_user_logged_in() && $args->theme_location == 'primary') {
$items .= '<li><a href="'. site_url('wp-login.php') .'">로그인</a></li>';
}
return $items;
(Source: wpbegginer)

위의 코드는 해당 메뉴에서 맨 끝에 추가됩니다. 코드에서 $items .= 부분을 통해 맨 끝에 추가됨을 알 수 있습니다. 맨 앞에 추가하려면 아래와 같이 응용할 수 있습니다:

$preitem = '표시할 사용자 메뉴 항목';
$items = $preitem.$items;
return $items;

참고

일부 글에 제휴 링크가 포함될 수 있으며 파트너스 활동으로 일정액의 수수료를 받을 수 있습니다.

댓글 남기기

* 이메일 정보는 공개되지 않습니다.