ダリの雑記:WEBプログラム版

メニューをカスタマイズ(WordPress)

WordPressの外観>メニューで作ったメニューは、wp_nav_menu関数で簡単出力されます。

階層も反映されてて便利なのですが、どうしてもこの関数は実現できないことが発生したため、独自に関数を作ることにしました。

メニューをデータを取得するには、wp_get_nav_menu_itemsを使用して配列で取得します。

ただし階層構造にはなってません。

なので、以前の記事「WordPressのサイトマップを作る【プラグインなし】」を参考に、階層構造で作り直して出力します。

[php]

function my_wp_nav_menu($menu_type, $menu_item_parent = 0, $ul_use_flag = 0){

$return = "";
$menu_items = wp_get_nav_menu_items('main_navi');
$menu_trees = array();

if($menu_items){
$exist_flag = 0;
foreach($menu_items as $menu_item){

//親が引数($menu_item_parent)と同じもののみ
if($menu_item_parent == $menu_item->menu_item_parent){
if($exist_flag == 0){
if($ul_use_flag == 1) $return .= '

'."\r\n";
}
}

return $return;
}

[/php]

使用する場合は以下の通り

[php]

[/php]

これで大体wp_nav_menu関数の標準設定と同じ挙動となります。

再帰のたびに、wp_get_nav_menu_itemsで全部取りなおすので、あんまり効率は良くないですが、とりあえずこれで改造し放題です。

モバイルバージョンを終了