フロントの人の雑多メモ

【WordPress】wp_nav_menuで非公開のページは非表示にする方法

【WordPress】wp_nav_menuで非公開のページは非表示にする方法

WordPressでメニューを作成できるwp_nav_menu()で、非公開のページは非表示にするフィルターフックをご紹介します。

やりたいこと

固定ページを非公開にすると

非公開の固定ページ

メニューのここも「非公開」となりますが

WordPress メニュー 非公開

実際のメニューには表示されてしまいます。(WordPressからログアウトした状態でも)

メニュー

そこで

functions.phpに以下のコードを追記します。

//メニューから非公開のページは削除
function hide_private_pages_from_menu ($items, $args) {
	foreach ($items as $ix => $obj) {
		if (!is_user_logged_in () && 'private' == get_post_status ($obj->object_id)) {
			unset ($items[$ix]);
		}
	}
	return $items;
}
add_filter ('wp_nav_menu_objects', 'hide_private_pages_from_menu', 10, 2);

すると、メニューから消えました。(WordPressからログアウトした状態でご確認ください)

メニューから消えた

(参考) navigation - Exclude Private, Draft pages from Primary Nav when using custom menu - WordPress Development Stack Exchange

コメント

内容を確認の上、個人情報などは省いて掲載させていただきます。

お名前・メールアドレスも入力する

メールで返信がほしい場合に入力してください。

頂いた個人情報は開示しません。返信のためだけに利用いたします。

直接送信されます。確認の上、「送信」してください。

お役に立てましたら応援をお待ちしております!
頂いた応援は子育てに活用させていただきます。

OFUSEで応援を送る


または以下のボタンからなにか買って応援 (PR)

Amazon

楽天市場

Yahoo!ショッピング

Amazonのアソシエイトとして「けん」は適格販売により収入を得ています。

シェア

Twitterでシェア Facebookでシェア LINEでシェア はてなブックマークでシェア

お役に立てましたら応援をお待ちしております!
頂いた応援は子育てに活用させていただきます。

OFUSEで応援を送る