Description
Shed Menu adds visibility conditions to WordPress navigation menu items. You can show or hide each item based on three conditions:
- Login status (logged in / logged out / everyone)
- Date range (start datetime, end datetime)
- User roles (administrator, editor, author, contributor, subscriber, or custom roles)
All conditions are optional and combined with AND logic. This plugin reads the current user’s role information via wp_get_current_user() to evaluate role-based conditions.
Three ways to use
- Standard menus — Open Appearance Menus, expand any item, and set the conditions inline.
- Hand-coded themes — Use the helper function
shedmenu_visible()in yourheader.phpor other template files. - Block editor — Wrap any blocks in the « Shed Menu — Conditional » block to show/hide them based on the same conditions.
Helper function example
<?php if ( shedmenu_visible( [ 'login' => 'in' ] ) ) : ?>
<li><a href="/mypage/">My Page</a></li>
<?php endif; ?>
Shortcode example
[shedmenu_visible login="in" start="2026-04-01" end="2026-04-30" roles="administrator"]
This content is only visible to administrators between April 1 and April 30.
[/shedmenu_visible]
日本語の説明
WordPress 標準ナビゲーションメニューに、メニュー項目単位の表示条件を追加します。
- ログイン状態(ログイン中 / ログアウト中 / 全員)
- 表示期間(開始日時・終了日時)
- ユーザーロール(管理者 / 編集者 / 投稿者 等)
全ての条件は任意で、AND 条件で組み合わされます。
外観 メニュー画面で各項目に条件を設定できます。テーマで wp_nav_menu() を使わず HTML 直書きしている場合は shedmenu_visible() ヘルパー関数を使ってください。Gutenberg では「Shed Menu — Conditional」ブロックで任意のブロック群を条件表示にできます。
Third-Party Services
This plugin does not connect to any external services. All processing happens on your own server.
Captures d’écran
Installation
- Upload the
shed-menufolder to the/wp-content/plugins/directory, or install via the Plugins screen in WordPress. - Activate the plugin through the Plugins screen.
- Go to Appearance Menus, expand any menu item, and configure visibility conditions.
FAQ
-
Does this work with caching plugins?
-
Login-based visibility is evaluated per request. If you use a page caching plugin, make sure it serves separate cached pages for logged-in vs logged-out users. Most caching plugins support this by default.
-
Shed Menu uses the standard
wp_nav_menu_objectsfilter and does not override menu rendering. It works alongside most menu plugins. -
The Navigation block uses its own internal item structure that does not expose per-item post meta in a stable way. Use the « Shed Menu — Conditional » block to wrap navigation links instead.
-
What happens to my settings when I uninstall?
-
Uninstalling removes all visibility settings stored on menu items and plugin options. Deactivating without uninstalling preserves all settings.
-
Can I use custom roles?
-
Yes. The Roles field in the menu item editor lists all roles registered in your WordPress installation, including custom roles added by other plugins.
Avis
Il n’y a aucun avis sur cette extension.
Contributeurs & développeurs
« Shed Menu » est un logiciel libre. Les personnes suivantes ont contribué à cette extension.
ContributeursTraduisez « Shed Menu » dans votre langue.
Le développement vous intéresse ?
Parcourir le code, consulter le SVN dépôt, ou s’inscrire au journal de développement par RSS.
Historique des changements
0.1.6
- Confirmed compatibility with WordPress 7.0
0.1.5
- [fix] Block namespace renamed from
shed/conditionaltoshed-menu/conditionalfor WordPress.org compliance. - [fix] Helper function renamed from
shed_menu_visible()toshedmenu_visible()for prefix consistency. - [fix] Shortcode renamed from
[shed_menu_visible]to[shedmenu_visible]for prefix consistency. - [fix] readme.txt License field updated to SPDX identifier GPL-2.0-or-later.
0.1.4
- [perf] Child-item cascade removal now uses O(1) hash lookup instead of O(n) in_array; added circular-reference guard.
- [fix] Added update_meta_cache() call in filter_menu_items() to prevent N+1 meta queries on large menus.
- [fix] normalize_datetime() now validates month/day with checkdate() to reject invalid dates like 2026-02-30.
- [fix] array_filter() applied to roles meta in is_item_visible() to strip empty strings stored in serialized arrays.
- [fix] Added Domain Path header; renamed wp_localize_script object from wsmData to shedmenuData.
- [fix] Removed non-standard Description-ja header field.
0.1.2
- [fix] Constant
Shedmenu_PATHrenamed toSHEDMENU_PATHto follow WordPress naming conventions (uppercase). - [fix] Replaced
phpcs:disable/enableblocks with per-linephpcs:ignorein menu item save handler. Added English comment explaining core nonce pre-verification.
0.1.1
- Changed: All function, class, constant, hook, and option prefixes renamed from wsm_/WSM_ to shedmenu_/SHEDMENU_/Shedmenu_.
0.1.0
- Initial release.
- Login status visibility (in / out / either).
- Scheduled date range visibility (start / end datetime).
- Role-based visibility (all registered roles supported).
- Helper function shed_menu_visible() for hand-coded themes.
- Shortcode [shed_menu_visible] for widgets, pages, and classic editor.
- Conditional block (shed/conditional) for the block editor.
- Automatic cascade: hiding a parent item also hides all its children.



