私はこれが古いことを知っていますが、私にもこの問題があり、カスタムメニューウォーカーを使用することで対処するかなりクリーンな方法を見つけました
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(),
));
注:これは、投稿タイプのスラッグと名前が同じであることを前提としています。