Version Description
- Add support for multisite. Props @open-dsi and @fiech.
Download this release
Release Info
| Developer | helgatheviking |
| Plugin | |
| Version | 1.9.0 |
| Comparing to | |
| See all releases | |
Code changes from version 1.8.6 to 1.9.0
- inc/class.Walker_Nav_Menu_Edit_Roles_4.7.php +68 -68
- nav-menu-roles.php +31 -11
- readme.txt +10 -3
inc/class.Walker_Nav_Menu_Edit_Roles_4.7.php
CHANGED
|
@@ -1,69 +1,69 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
/**
|
| 3 |
-
* Custom Walker for Nav Menu Editor
|
| 4 |
-
* Add wp_nav_menu_item_custom_fields hook
|
| 5 |
-
* Hat tip to @kucrut and Menu Icons for the preg_replace() idea
|
| 6 |
-
* means I no longer have to translate core strings
|
| 7 |
-
*
|
| 8 |
-
* @package Nav Menu Roles
|
| 9 |
-
* @since 1.8.6
|
| 10 |
-
* @uses Walker_Nav_Menu_Edit
|
| 11 |
-
*/
|
| 12 |
-
class Walker_Nav_Menu_Edit_Roles extends Walker_Nav_Menu_Edit {
|
| 13 |
-
|
| 14 |
-
/**
|
| 15 |
-
* Start the element output.
|
| 16 |
-
*
|
| 17 |
-
* @see Walker_Nav_Menu::start_el()
|
| 18 |
-
*
|
| 19 |
-
* @param string $output Passed by reference. Used to append additional content.
|
| 20 |
-
* @param object $item Menu item data object.
|
| 21 |
-
* @param int $depth Depth of menu item. Used for padding.
|
| 22 |
-
* @param array $args Not used.
|
| 23 |
-
* @param int $id Not used.
|
| 24 |
-
*/
|
| 25 |
-
public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
|
| 26 |
-
$item_output = '';
|
| 27 |
-
$output .= parent::start_el( $item_output, $item, $depth, $args, $id );
|
| 28 |
-
$output .= preg_replace(
|
| 29 |
-
// NOTE: Check this regex on major WP version updates!
|
| 30 |
-
'/(?=<fieldset[^>]+class="[^"]*field-move)/',
|
| 31 |
-
$this->get_custom_fields( $item, $depth, $args ),
|
| 32 |
-
$item_output
|
| 33 |
-
);
|
| 34 |
-
}
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
/**
|
| 38 |
-
* Get custom fields
|
| 39 |
-
*
|
| 40 |
-
* @access protected
|
| 41 |
-
* @since 0.1.0
|
| 42 |
-
* @uses do_action() Calls 'menu_item_custom_fields' hook
|
| 43 |
-
*
|
| 44 |
-
* @param object $item Menu item data object.
|
| 45 |
-
* @param int $depth Depth of menu item. Used for padding.
|
| 46 |
-
* @param array $args Menu item args.
|
| 47 |
-
* @param int $id Nav menu ID.
|
| 48 |
-
*
|
| 49 |
-
* @return string Form fields
|
| 50 |
-
*/
|
| 51 |
-
protected function get_custom_fields( $item, $depth, $args = array(), $id = 0 ) {
|
| 52 |
-
ob_start();
|
| 53 |
-
$item_id = intval( $item->ID );
|
| 54 |
-
/**
|
| 55 |
-
* Get menu item custom fields from plugins/themes
|
| 56 |
-
*
|
| 57 |
-
* @since 0.1.0
|
| 58 |
-
*
|
| 59 |
-
* @param int $item_id post ID of menu
|
| 60 |
-
* @param object $item Menu item data object.
|
| 61 |
-
* @param int $depth Depth of menu item. Used for padding.
|
| 62 |
-
* @param array $args Menu item args.
|
| 63 |
-
*
|
| 64 |
-
* @return string Custom fields
|
| 65 |
-
*/
|
| 66 |
-
do_action( 'wp_nav_menu_item_custom_fields', $item_id, $item, $depth, $args );
|
| 67 |
-
return ob_get_clean();
|
| 68 |
-
}
|
| 69 |
} // Walker_Nav_Menu_Edit
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Custom Walker for Nav Menu Editor
|
| 4 |
+
* Add wp_nav_menu_item_custom_fields hook
|
| 5 |
+
* Hat tip to @kucrut and Menu Icons for the preg_replace() idea
|
| 6 |
+
* means I no longer have to translate core strings
|
| 7 |
+
*
|
| 8 |
+
* @package Nav Menu Roles
|
| 9 |
+
* @since 1.8.6
|
| 10 |
+
* @uses Walker_Nav_Menu_Edit
|
| 11 |
+
*/
|
| 12 |
+
class Walker_Nav_Menu_Edit_Roles extends Walker_Nav_Menu_Edit {
|
| 13 |
+
|
| 14 |
+
/**
|
| 15 |
+
* Start the element output.
|
| 16 |
+
*
|
| 17 |
+
* @see Walker_Nav_Menu::start_el()
|
| 18 |
+
*
|
| 19 |
+
* @param string $output Passed by reference. Used to append additional content.
|
| 20 |
+
* @param object $item Menu item data object.
|
| 21 |
+
* @param int $depth Depth of menu item. Used for padding.
|
| 22 |
+
* @param array $args Not used.
|
| 23 |
+
* @param int $id Not used.
|
| 24 |
+
*/
|
| 25 |
+
public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
|
| 26 |
+
$item_output = '';
|
| 27 |
+
$output .= parent::start_el( $item_output, $item, $depth, $args, $id );
|
| 28 |
+
$output .= preg_replace(
|
| 29 |
+
// NOTE: Check this regex on major WP version updates!
|
| 30 |
+
'/(?=<fieldset[^>]+class="[^"]*field-move)/',
|
| 31 |
+
$this->get_custom_fields( $item, $depth, $args ),
|
| 32 |
+
$item_output
|
| 33 |
+
);
|
| 34 |
+
}
|
| 35 |
+
|
| 36 |
+
|
| 37 |
+
/**
|
| 38 |
+
* Get custom fields
|
| 39 |
+
*
|
| 40 |
+
* @access protected
|
| 41 |
+
* @since 0.1.0
|
| 42 |
+
* @uses do_action() Calls 'menu_item_custom_fields' hook
|
| 43 |
+
*
|
| 44 |
+
* @param object $item Menu item data object.
|
| 45 |
+
* @param int $depth Depth of menu item. Used for padding.
|
| 46 |
+
* @param array $args Menu item args.
|
| 47 |
+
* @param int $id Nav menu ID.
|
| 48 |
+
*
|
| 49 |
+
* @return string Form fields
|
| 50 |
+
*/
|
| 51 |
+
protected function get_custom_fields( $item, $depth, $args = array(), $id = 0 ) {
|
| 52 |
+
ob_start();
|
| 53 |
+
$item_id = intval( $item->ID );
|
| 54 |
+
/**
|
| 55 |
+
* Get menu item custom fields from plugins/themes
|
| 56 |
+
*
|
| 57 |
+
* @since 0.1.0
|
| 58 |
+
*
|
| 59 |
+
* @param int $item_id post ID of menu
|
| 60 |
+
* @param object $item Menu item data object.
|
| 61 |
+
* @param int $depth Depth of menu item. Used for padding.
|
| 62 |
+
* @param array $args Menu item args.
|
| 63 |
+
*
|
| 64 |
+
* @return string Custom fields
|
| 65 |
+
*/
|
| 66 |
+
do_action( 'wp_nav_menu_item_custom_fields', $item_id, $item, $depth, $args );
|
| 67 |
+
return ob_get_clean();
|
| 68 |
+
}
|
| 69 |
} // Walker_Nav_Menu_Edit
|
nav-menu-roles.php
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
Plugin Name: Nav Menu Roles
|
| 4 |
Plugin URI: http://www.kathyisawesome.com/449/nav-menu-roles/
|
| 5 |
Description: Hide custom menu items based on user roles.
|
| 6 |
-
Version: 1.
|
| 7 |
Author: Kathy Darling
|
| 8 |
Author URI: http://www.kathyisawesome.com
|
| 9 |
License: GPL-3.0
|
|
@@ -48,13 +48,13 @@ class Nav_Menu_Roles {
|
|
| 48 |
* @constant string donate url
|
| 49 |
* @since 1.5
|
| 50 |
*/
|
| 51 |
-
CONST DONATE_URL = "https://
|
| 52 |
|
| 53 |
/**
|
| 54 |
* @constant string version number
|
| 55 |
* @since 1.7.1
|
| 56 |
*/
|
| 57 |
-
CONST VERSION = '1.
|
| 58 |
|
| 59 |
/**
|
| 60 |
* Main Nav Menu Roles Instance
|
|
@@ -329,7 +329,7 @@ class Nav_Menu_Roles {
|
|
| 329 |
<br />
|
| 330 |
|
| 331 |
<?php
|
| 332 |
-
|
| 333 |
$i = 1;
|
| 334 |
|
| 335 |
/* Loop through each of the available roles. */
|
|
@@ -426,11 +426,15 @@ class Nav_Menu_Roles {
|
|
| 426 |
}
|
| 427 |
|
| 428 |
/**
|
| 429 |
-
|
| 430 |
-
|
| 431 |
-
|
| 432 |
-
|
| 433 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 434 |
public function exclude_menu_items( $items ) {
|
| 435 |
|
| 436 |
$hide_children_of = array();
|
|
@@ -452,10 +456,26 @@ class Nav_Menu_Roles {
|
|
| 452 |
// check all logged in, all logged out, or role
|
| 453 |
switch( $item->roles ) {
|
| 454 |
case 'in' :
|
| 455 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 456 |
break;
|
| 457 |
case 'out' :
|
| 458 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 459 |
break;
|
| 460 |
default:
|
| 461 |
$visible = false;
|
| 3 |
Plugin Name: Nav Menu Roles
|
| 4 |
Plugin URI: http://www.kathyisawesome.com/449/nav-menu-roles/
|
| 5 |
Description: Hide custom menu items based on user roles.
|
| 6 |
+
Version: 1.9.0
|
| 7 |
Author: Kathy Darling
|
| 8 |
Author URI: http://www.kathyisawesome.com
|
| 9 |
License: GPL-3.0
|
| 48 |
* @constant string donate url
|
| 49 |
* @since 1.5
|
| 50 |
*/
|
| 51 |
+
CONST DONATE_URL = "https://paypal.me/helgatheviking/20";
|
| 52 |
|
| 53 |
/**
|
| 54 |
* @constant string version number
|
| 55 |
* @since 1.7.1
|
| 56 |
*/
|
| 57 |
+
CONST VERSION = '1.9.0';
|
| 58 |
|
| 59 |
/**
|
| 60 |
* Main Nav Menu Roles Instance
|
| 329 |
<br />
|
| 330 |
|
| 331 |
<?php
|
| 332 |
+
|
| 333 |
$i = 1;
|
| 334 |
|
| 335 |
/* Loop through each of the available roles. */
|
| 426 |
}
|
| 427 |
|
| 428 |
/**
|
| 429 |
+
* Exclude menu items via wp_get_nav_menu_items filter
|
| 430 |
+
* this fixes plugin's incompatibility with theme's that use their own custom Walker
|
| 431 |
+
* Thanks to Evan Stein @vanpop http://vanpop.com/
|
| 432 |
+
*
|
| 433 |
+
* @since 1.2
|
| 434 |
+
*
|
| 435 |
+
* Multisite compatibility added in 1.9.0
|
| 436 |
+
* by @open-dsi https://www.open-dsi.fr/ with props to @fiech
|
| 437 |
+
*/
|
| 438 |
public function exclude_menu_items( $items ) {
|
| 439 |
|
| 440 |
$hide_children_of = array();
|
| 456 |
// check all logged in, all logged out, or role
|
| 457 |
switch( $item->roles ) {
|
| 458 |
case 'in' :
|
| 459 |
+
/**
|
| 460 |
+
* Multisite compatibility.
|
| 461 |
+
*
|
| 462 |
+
* For the logged in condition to work,
|
| 463 |
+
* the user has to be a logged in member of the current blog
|
| 464 |
+
* or be a logged in super user.
|
| 465 |
+
*/
|
| 466 |
+
$visible = is_user_member_of_blog() || is_super_admin() ? true : false;
|
| 467 |
break;
|
| 468 |
case 'out' :
|
| 469 |
+
/**
|
| 470 |
+
* Multisite compatibility.
|
| 471 |
+
*
|
| 472 |
+
* For the logged out condition to work,
|
| 473 |
+
* the user has to be either logged out
|
| 474 |
+
* or not be a member of the current blog.
|
| 475 |
+
* But they also may not be a super admin,
|
| 476 |
+
* because logged in super admins should see the internal stuff, not the external.
|
| 477 |
+
*/
|
| 478 |
+
$visible = ! is_user_member_of_blog() && ! is_super_admin() ? true : false;
|
| 479 |
break;
|
| 480 |
default:
|
| 481 |
$visible = false;
|
readme.txt
CHANGED
|
@@ -1,11 +1,11 @@
|
|
| 1 |
=== Nav Menu Roles ===
|
| 2 |
|
| 3 |
Contributors: helgatheviking
|
| 4 |
-
Donate link: https://www.paypal.me/helgatheviking
|
| 5 |
Tags: menu, menus, nav menu, nav menus
|
| 6 |
Requires at least: 4.5.0
|
| 7 |
-
Tested up to: 4.
|
| 8 |
-
Stable tag: 1.
|
| 9 |
License: GPLv3
|
| 10 |
|
| 11 |
Hide custom menu items based on user roles. PLEASE READ THE FAQ IF YOU ARE NOT SEEING THE SETTINGS.
|
|
@@ -202,8 +202,15 @@ However, the Import plugin only imports certain post meta for menu items. As of
|
|
| 202 |
1. Use the same .xml file and perform a second import
|
| 203 |
1. No duplicate posts will be created but all menu post meta (including your Nav Menu Roles info) will be imported
|
| 204 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 205 |
== Changelog ==
|
| 206 |
|
|
|
|
|
|
|
|
|
|
| 207 |
= 1.8.5 =
|
| 208 |
* Use new Walker for WP4.7
|
| 209 |
|
| 1 |
=== Nav Menu Roles ===
|
| 2 |
|
| 3 |
Contributors: helgatheviking
|
| 4 |
+
Donate link: https://www.paypal.me/helgatheviking/20
|
| 5 |
Tags: menu, menus, nav menu, nav menus
|
| 6 |
Requires at least: 4.5.0
|
| 7 |
+
Tested up to: 4.8.3
|
| 8 |
+
Stable tag: 1.9.0
|
| 9 |
License: GPLv3
|
| 10 |
|
| 11 |
Hide custom menu items based on user roles. PLEASE READ THE FAQ IF YOU ARE NOT SEEING THE SETTINGS.
|
| 202 |
1. Use the same .xml file and perform a second import
|
| 203 |
1. No duplicate posts will be created but all menu post meta (including your Nav Menu Roles info) will be imported
|
| 204 |
|
| 205 |
+
= Is Nav Menu Roles compatible with WPML ? =
|
| 206 |
+
|
| 207 |
+
Yes, but manually. WPML developers have informed me that the meta data for nav menu items is **not** synced by WPML, meaning that menus copied into a new language will not bring their custom Nav Menu Roles settings. However, if you manually reconfigure the settings, the new language menu will work as expected.
|
| 208 |
+
|
| 209 |
== Changelog ==
|
| 210 |
|
| 211 |
+
= 1.9.0 =
|
| 212 |
+
* Add support for multisite. Props @open-dsi and @fiech.
|
| 213 |
+
|
| 214 |
= 1.8.5 =
|
| 215 |
* Use new Walker for WP4.7
|
| 216 |
|
