フロントの人の雑多メモ

【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

コメント

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

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

シェア

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