web-dev-qa-db-ja.com

全メニュー項目リストの代わりに現在のページメニュー項目名を取得する方法

私はあなたがこのウェブサイトのように現在のページのメニュー項目を見ることができるメニュー構造を構築したいと思います http://www.bigspaceship.com/services/

私は周りを検索し、私はこれまでに次の機能を持っています

<?php
$menu_items = wp_get_nav_menu_items( 'main-menu' );
foreach( $menu_items as $item ) {
  print_r( $item ) ; // see what you can work with
  // carry on
}

現在のページのメニュー項目名のみを実際に印刷する方法を教えてください。私はまだダッシュボードからメニュー項目を制御したいのですが、管理者内の各メニューの名前を変更して動的に更新させることができるようにしたいのです。

助けてくれてありがとう。

1
cmsdeployed
  1. 各メニュー項目内で、object_idは、メニュー項目が参照するオブジェクトのIDを保持しています。これは投稿/ページ/ CPT /期間IDになります。カスタムリンクの場合、IDはそれ自身を参照します。 (あなたがそれがどんなタイプのオブジェクトであるか知りたいならば、objectはそれを含みます。)

  2. get_queried_object_id()はあなたに現在のページのIDを与えます。

  3. API関数 wp_filter_object_list() を使用して、object_idが照会されたオブジェクトと一致しないメニュー項目を除外することができます。

  4. その後、単一の要素を含む配列を残します。そのため、phpのcurrentを使用して、$this_itemに一致するメニュー項目オブジェクトのみを含めるようにします。

  5. そして最後に、titleはメニュー項目に付けた名前を保持します。

$menu_items = wp_get_nav_menu_items( 'main-menu' );
$this_item = current( wp_filter_object_list( $menu_items, array( 'object_id' => get_queried_object_id() ) ) );
echo $this_item->title;

注 - 私はこれをテストしていないので、うまくいけばうまくいきます!

6
Milo