schema.orgプラグインのSchema.org定義に「SiteNavigationElement」というタイプがあって、管理メニュー内にある「外観」→「メニュー」で設定する値を取得してJSON-LD形式で出力しています。(構造化データテストツール参照)このサイトではグローバルナビゲーションを定義対象にしていて、メニュー名をプラグインのテキストボックに直接入力してそのメニュー名から情報を取得する方法をとっています。この入力形式だと設定する時に外観のメニューを見てからコピーなどして貼り付けという作業がちょっと手間。いずれにしろ登録されていないメニューは表示されないので、登録されているメニューから選択する形式にしたほうがミスも減るなと思い取得方法を調査することにしました。外観→メニューのプルダウンの実装を見てみる外観→メニューを表示しているPHPファイル(/wp-admin/nav-menus.php)を見ていたら発見。wp_get_nav_menus関数で、wp_termとwp_term_taxonomyテーブル内にあるメニュー情報を取得してくれるようです。wp_get_nav_menus();取得した内容をダンプしてみると以下のようなデータを返してくれます。=>(以下省略)欲しいデータは、nameプロパティの値(5行目)なので、この値を使用してselect要素を作成します。プルダウンの作成wp_get_nav_menus関数はコールすると配列でデータを返してくれるので、まず配列に値が入っているかチェック。それから1件以上存在すれば、select要素を出力して、ループでoption要素を出力する仕組み。属性の追加サンプルを元にプラグインに実装します。select要素にname属性をセットしたり、登録している名前とマッチしたらoption要素にselected属性を設定して選択状態にする処理などを追加しました。今回の修正では変更することはなかったのですが、選択したメニューにセットしてある内容を出力する、wp_get_nav_menu_items関数に少しふれておきます。);}}}引数として登録しているメニュー名を渡します。戻り値はWP_Postオブジェクトの配列です。メニューの項目は、wp_postテーブルのpost_typeカラムの「nav_menu_item」なので当然そうなりますね。https://wordpress.org/plugins/wp-structuring-markupウェブサイト上でschema.org定義をJSON-LDの構文マークアップすることができます。「株式会社まなびと」の代表取締役はじめました。宮崎県で活動するフロントエンドエンジニア。フロントエンド業の傍らWordPressのプラグイン開発や公式テーマレビュー、Webマーケティングやプログラミング教室の講師などのいろいろなお仕事をしてます。JSerでPHPer。