나는 이것이 오래되었다는 것을 알고 있지만이 문제도 가지고 있으며 그것을 처리하는 다소 깨끗한 방법은 사용자 정의 메뉴 워커를 사용하는 것으로 나타났습니다
class KB_Custom_Menu_Walker extends Walker_Nav_Menu {
protected static $custom_post_types = array();
public function start_el(&$output, $item, $depth=0, $args=array(), $id=0) {
if (isset( self::$custom_post_types[ $item->url ] )) {
$item->url = get_post_type_archive_link( self::$custom_post_types[$item->url] );
}
parent::start_el($output, $item, $depth, $args, $id);
}
public static function custom_post_types($type=null) {
if ($type) {
self::$custom_post_types[ '#post_type_'.$type ] = $type;
}
return self::$custom_post_types;
}
}
URL이 #post_type_album
인 사용자 정의 링크 메뉴 항목 이 있으면 다음과 같이 사용할 수 있습니다.
# Where you defined your custom post type (could be anywhere anyway)
KB_Custom_Menu_Walker::custom_post_types('album');
# And display the menu
wp_nav_menu(array(
'theme_location' => 'primary-nav',
'walker' => new KB_Custom_Menu_Walker(),
));
참고 : 이는 게시물 유형의 슬러그와 이름이 동일하다고 가정합니다.