カスタムメニューをショートコードで表示する方法

カスタムメニューをショートコードで表示する方法

備忘録。WordPressで作成したカスタムメニューをショートコードで実装できるようにする方法です。

通常はwp_nav_menuでカスタムメニューをページ内に表示できますが、ページ内に個別に表示したい場合などは、ショートコードで直接記入する方法が便利です。

カスタムメニューの作成

まずは管理画面で、実装するカスタムメニューを作成します。

管理画面の「概観」に「メニュー」がない場合は、以下をfunctions.phpに追加します。

<?php add_theme_support( 'menus' ); ?>

例として「test01」というカスタムメニューを作成しました。

functions.phpの修正

カスタムメニューの準備ができたら、カスタムメニューをショートコードで実装するための設定をfunctions.phpに追加します。

<?php
//custom_menu
function single_page_custom_menu() {
    return wp_nav_menu( array('menu' => 'test01', 'echo' => false));
}
add_shortcode("customenu", "single_page_custom_menu");
?>

menuに作成したカスタムメニュー名を記入します。customenuが、ショートコードで表示する文字列です。

下記のショートコードをページ内に記入でカスタムメニューを実装する事ができます。

[customenu]

カスタムメニューが複数ある場合

functions.phpを下記のように変更すれば、ショートコードに記入したカスタムメニューを表示することができます。カスタムメニューが複数ある場合は、こちらの方法がよいかもしれません。

<?php
//custom_menu
function single_page_custom_menu($atts, $content = null) {
    extract(shortcode_atts(array('menu' => '', 'echo' => true), $atts));
    return wp_nav_menu( array('menu' => $menu, 'echo' => false));
}
add_shortcode("customenu", "single_page_custom_menu");
?>

ショートコード内に、表示したいカスタムメニュー名を記入します。

[customenu menu="test01"]

通常カスタムメニューを表示する<?php wp_nav_menu(); ?>が使えないときにも、助かる方法です。

参考

WordPressのカスタムメニューをショートコードで表示出来る様にする | かちびと.net