web-dev-qa-db-ja.com

wp_page_menuから特定の名前のページを除外する

私のクライアントはWPサイトのマルチサイトネットワークを持ち、それらはすべて同じテンプレートを使用しています。このテンプレートはwp_page_menuを使います。私はちょうど特定のプラグインを使用してテンプレートのモバイル版を追加しました。 Webサイトのデスクトップ版と同じページを使用しますが、クライアントは別のランディングページをリクエストしました。

問題は、このランディングページを容易にするために新しいページを作成すると、wp_page_menuによって生成されたコードに表示されることです。このネットワークのすべてのサイトは同じテンプレートを使用し、ページはサイトごとに異なるページIDを持つため、wp_page_menu関数で手動で除外することはできません。

IDではなくタイトルやカテゴリ名で投稿を除外できれば、これでうまくいく可能性があると私は考えていました。しかし、その方法がわかりません。助けてください?

2
user5028

get_page_by_path()を使って、それから返されたオブジェクトからのIDをexcludeフィルタで使うのはどうですか?

add_filter('wp_page_menu_args','my_nav_exclude_pages');

function my_nav_exclude_pages( $args = array() ) {
  $homepage = get_page_by_path('my-page-slug');
  $args['exclude'] = join( ',', array( $args['exclude'], $homepage->ID ) ); 

  return $args;
}
1
Dougal Campbell