私のクライアントはWPサイトのマルチサイトネットワークを持ち、それらはすべて同じテンプレートを使用しています。このテンプレートはwp_page_menuを使います。私はちょうど特定のプラグインを使用してテンプレートのモバイル版を追加しました。 Webサイトのデスクトップ版と同じページを使用しますが、クライアントは別のランディングページをリクエストしました。
問題は、このランディングページを容易にするために新しいページを作成すると、wp_page_menuによって生成されたコードに表示されることです。このネットワークのすべてのサイトは同じテンプレートを使用し、ページはサイトごとに異なるページIDを持つため、wp_page_menu関数で手動で除外することはできません。
IDではなくタイトルやカテゴリ名で投稿を除外できれば、これでうまくいく可能性があると私は考えていました。しかし、その方法がわかりません。助けてください?
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;
}