「外観」→「メニュー」の「テーマの場所」で「メインナビゲーション」が空欄の場合、全ての固定ページが自動でメニューに表示される。これはこれで別にいいんだけど「このページはメニューに出したくない」とか「○階層までしか表示したくない」とかがあった場合はカスタムメニューを作成してそれを指定することになる。でもそれだと全メニューを手動で追加しなければならずめんどくさい。
「追加したページを自動でメニューに追加してほしいがカスタマイズもしたい」場合は wp_nav_menu の fallback_cb に指定されている関数を上書きしてしまう。デフォルトでは theme-functions.php の themify_default_main_nav 関数
| 583 584 585 586 587 | function themify_default_main_nav() {     echo '<ul id="main-nav" class="main-nav clearfix">';     wp_list_pages('title_li=');     echo '</ul>'; } | 
が呼び出されるようになっているので(wp_page_menu じゃないよ)、custom-functions.phpに以下を追記。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | // wp_nav_menu のパラメータの上書き add_filter('wp_nav_menu_args', 'custom_wp_nav_menu_args'); function custom_wp_nav_menu_args($args) {     if ($args['theme_location'] == 'main-nav') {         // メインナビゲーションの場合、fallback_cb をこちらで用意した関数に置き換える         $args['fallback_cb'] = 'custom_default_main_nav';     }     return $args; } // カスタム fallback_cb function custom_default_main_nav() {     echo '<ul id="main-nav" class="main-nav clearfix">';     wp_list_pages('title_li=&depth=3&exclude=12,34,56');  // 最大3階層まで、ページID 12, 34, 56 は表示しない     echo '</ul>'; } | 
wp_nav_menu_args フィルターフックで fallback_cb パラメータを書き換えて独自メニューを表示させる。wp_list_pages の詳しい使い方については WordPress Codex 日本語版を参照。
