ツイート
シェア
LINEで送る
B! はてぶでブックマーク
Pocketでブックマーク
RSSフィード

WordPress5.3, ナビゲーションメニューで整数のスラッグは使えない

wordpress image
イラストダウンロードサイト【イラストAC】
の画像をもとに加工しています。

register_nav_menus()のスラッグ名で整数が使えなくなりました。個人的には『使う人がいたのか?』と思いましたが、使っているととんでもないバグが発生していたようです。

配列の要素の意味を考えずに、とりあえず数値を入れるプログラミングをしているとバグになっていた模様。

開発者向けの話です。テーマ・プラグインを作っている人は要チェック。

register_nav_menus()は何?

メニューの作成には2つあります。ひとつは、

メニューの中に何を入れるのか?

を設定するもの。もうひとつは、

メニューをどこに入れるのか?

を設定するもの。register_nav_menus()は『どこに入れるか?』を設定する関数です。

<?php

register_nav_menus( [
    'top_menu' => 'トップメニュー',
    'footer_menu' => 'フッターメニュー',
] );

管理画面では、『外観』->『メニュー』の位置の設定になります。

ナビゲーションメニュー - 位置の設定
外観 -> メニュー ->『メニューの編集』タブ
ナビゲーションメニュー - 位置の設定
外観 -> メニュー ->『位置の管理』タブ

整数の配列キーはバグ

register_nav_menus()で指定するパラメータは$locationsで配列です。ただ、配列のキーに整数を指定すると、内部で配列の値が変わります。

パラメータで指定したとき
<?php

register_nav_menus( [
    'primary' => 'Primary', 
    1 => 'First', 
    2 => 'Second',
] );
結果の配列
array( 
    'primary' => 'Primary', 
    0 => 'First', 
    1 => 'Second', 
)

『なんでこうなるんだ?』と思いますが、関数の内部でarray_merge()を使っているから。

WP5.3からキーに整数を使うと_doing_it_wrong()でログに警告が出ます。ログで確認して出ないようにしましょう。

そもそも、リファレンスのサンプルで整数を使ってないので、わざわざ整数値を使う人はあまりいないと思いますが。

前の投稿
WordPress5.3, Backbone.jsのバージョンアップ
WordPress5.3, 投稿タイプで特定機能をサポートする設定
次の投稿

WordPressの本

post-cta-image

たくさんあるなかで、WordPressの基本が学べる、目的別に学べる本を選びました。

  • WordPressの基本。
  • Webサイト作成から運用まで全体的に学ぶ。
  • かんたんなカスタマイズを学ぶ。
  • 何も分からないところから学ぶ。
  • WordPressからPHPプログラミングを学ぶ。

の5冊です。どうしてもネット上で調べて勉強するのが苦手という人におすすめです。

この内容をモノにすればほかの本は必要ありません。あとは自分の力で、書籍を使わずにインターネット上にある情報だけで学んでいけます。

コメントを残す

*