=== If Menu - Visibility control for Menu Items ===
Contributors: andreiigna
Tags: menu, visibility, rules, roles, hide, if, nav menu, show, display
Requires at least: 4
Tested up to: 5.2
Requires PHP: 5.4
Stable tag: trunk
License: GPL-3.0-or-later
License URI: https://www.gnu.org/licenses/gpl-3.0.html

Display tailored menu items to each visitor with visibility rules

== Description ==

Control what menu items your site's visitors see, based on visibility rules. Here are a few examples:

* Display a menu item only if current `User is logged in`
* Hide menu items if `Device is mobile`
* Display menu items for `Admins and Editors`
* Hide Login or Register links for `Logged in Users`
* Display menu items for `Users from US or UK`
* Display menu items only for `Customers with active membership`
* Display menu items for visitors browsing with `Language English or Spanish`

The plugin is easy to use, each menu item will have a new option “Change menu item visibility” which will enable the selection of rules (example in Screenshots)

## Features

* Basic set of visibility rules
  * User state `User is logged in`
  * User roles `Admin` `Editor` `Author` etc
  * Page type `Front page` `Single page` `Single post`
  * Visitor device `Is Mobile`
* Advanced visibility rules - requires Premium plan
  * Visitor location - detect visitor's Country
  * Visitor language - detect visitor's selected Language
  * WooCommerce Subscriptions - Display menus for users with active subscription
  * WooCommerce Memberships - Display menus for customers with active membership plans
  * Groups - Detect if users are in specific groups
  * WishList Member - Detect the users' membership level
  * Restrict Content Pro - Detect the users' subscription level
* Multiple rules - mix multiple rules for a menu item visibility
  * show if `User is logged in` AND `Device is mobile`
  * show if `User is Admin` AND `Is front page`
* Support for adding your custom rules

Example of adding a new visibility rule is described in the FAQ section

== Frequently Asked Questions ==

= If Menu is broken, no visibility rules are available =

The code for modifying the menu items is limited and if other plugins/themes try to alter the menu items, this plugin will break.

This is an ongoing [issue with WordPress](http://core.trac.wordpress.org/ticket/18584) which hopefully will be fixed in a future release.

Try to use just one plugin that changes functionality for menu items.

= How can I add a custom visibility rule for menu items? =

New rules can be added by any other plugin or theme.

Example of adding a new custom rule for displaying/hiding a menu item when current page is a custom-post-type.

`
// theme's functions.php or plugin file
add_filter('if_menu_conditions', 'my_new_menu_conditions');

function my_new_menu_conditions($conditions) {
  $conditions[] = array(
    'id'        =>  'single-my-custom-post-type',                       // unique ID for the rule
    'name'      =>  __('Single my-custom-post-type', 'i18n-domain'),    // name of the rule
    'condition' =>  function($item) {                                   // callback - must return Boolean
      return is_singular('my-custom-post-type');
    }
  );

  return $conditions;
}
`

= Where can I find conditional functions? =

WordPress provides [a lot of functions](http://codex.wordpress.org/Conditional_Tags) which can be used to create custom rules for almost any combination that a theme/plugin developer can think of.

== Screenshots ==

1. Enable visibility rules for Menu Items
2. Example of visibility rules

== Changelog ==

= 0.15 - 2 July 2019 =
* Updated - Texts & styles for If Menu settings page
* Fixed - PHP error that may appear for Visibility Rules saved before If Menu v0.9

= 0.14 - 2 May 2019 =
* Added - "User registration is allowed" visibility rule
* Updated - Improved support for setting multiple visibility rules, without `eval` function from PHP
* Updated - Show Membership Levels from "WishList Member" plugin
* Updated - Compatibility with WordPress 5.2

= 0.13 - 8 April 2019 =
* Updated - Compatiblity with latest WordPress version
* Updated - Texts & more info about Premium plan
* Added - Visibility rule - User has expired Subscription, integration with [Restrict Content Pro](https://restrictcontentpro.com/) plugin
* Updated - Visibility rule - Restrict Content Pro Membership shows Level number

= 0.12.2 - 3 September 2018 =
* Fixed - PHP error blocking page load (function formatting language names)

= 0.12 - 3 September 2018 =
* Added - Visiblity rule - Detect visitor's selected language
* Updated - Link to Support Request email
* Fixed - Better check for Premium plan after purchase (was not enabled in some cases)

= 0.11 - 23 Jul 2018 =
* Fixed - Blank page on "Appearance -> Menus"
* Fixed - Better compatitility with themes / plugins

= 0.10 - 8 May 2018 =
* Added - Visibility rule - User has Subscription Level, integration with [Restrict Content Pro](https://restrictcontentpro.com/) plugin
* Fixed - Display all WooCommerce Membership plans and save the visibility rule
* Fixed - Small render artifact in menu item title

= 0.9 - 21 April 2018 =
*This version requires PHP version to be at least 5.4*
* Added - Visibility rule - Customer has active membership, integration with [WooCommerce Memberships](https://woocommerce.com/products/woocommerce-memberships/) plugin
* Added - Visibility rule - Customer has active Job Manager Listing Subscription, integration with [Listing Payments for WP Job Manager](https://astoundify.com/products/wp-job-manager-listing-payments/) plugin
* Added - Option to disable menu item filtering in Admin panel
* Updated - Texts and notices

= 0.8.3 =
*Release Date - 22 February 2018*

* Fixed - Support for PHP <= 5.3, fixes error

= 0.8.2 =
*Release Date - 20 February 2018*

* Fixed - Support for older visibilty rule names, fixes PHP warning

= 0.8.1 =
*Release Date - 20 February 2018*

* Fixed - Better options checking, fixes PHP warning

= 0.8 =
*Release Date - 19 February 2018*

* Added - Visibility rules with multiple options. Requires Premium plan
* Added - Visibility rule - User country
* Added - Visibility rule - Is Super Admin on MultiSite
* Added - Visibility rule - User is in Group, integration with [Groups](https://wordpress.org/plugins/groups/) plugin
* Added - Visibility rule - User has subscription, integration with [WooCommerce Subscriptions](https://woocommerce.com/products/woocommerce-subscriptions/) plugin
* Added - Visibility rule - User has active membership plan, integration with [WooCommerce Memberships](https://woocommerce.com/products/woocommerce-memberships/) plugin
* Added - Visibility rule - User membership level, integration with [WishList Member](https://member.wishlistproducts.com/) plugin
* Updated - Better conflict detection for Nav_Menu Walker
* Fixed - translation strings & function used

= 0.7 =
*Release Date - 18 September 2017*

* Enhancement - Nicer styling for visibility rules
* Added - Peek option - Let admins preview hidden menu items
* Added - Settings page

= 0.6.3 =
*Release Date - 17 August 2017*

* New visibility rule - Language Is RTL
* Fix - Single rule works on servers with Eval disabled

= 0.6.2 =
*Release Date - 8 August 2017*

* Fix - Backwards compatibility with PHP < 5.4

= 0.6.1 =
*Release Date - 7 August 2017*

* Improvement - Change labels & texts for easier use
* Improvement - Better compatibility with latest versions of WordPress
* Improvement - Better compatibility with translation plugins
* Fix - Detection for conflict with other plugins

= 0.6 =
*Release Date - 27 August 2016*

* Improvement - Dynamic conditions based on default & custom user roles (added by plugins or themes) [thanks Daniele](https://wordpress.org/support/topic/feature-request-custom-roles)
* Improvement - Grouped conditions by User, Page or other types
* Fix - Filter menu items in admin section
* Fix - Better menu items filter saving code

= 0.5 =
*Release Date - 20 August 2016*

* Improvement - Support for WordPress 4.6
* Feature - New condition checking logged in user for current site in Multi Site [requested here](https://wordpress.org/support/topic/multi-site-user-is-logged-in-conditi
on)
* Feature - Added support for multi conditions [thanks for this ideea](https://wordpress.org/support/topic/more-than-one-condition-operators-1)
* Improvement - RO & DE translations

= 0.4.1 =
*Release Date - 13 December 2015*

* Fix - Fixes [issue](https://wordpress.org/support/topic/cant-add-items-to-menu-with-plugin-enabled) with adding new menu items

= 0.4 =
*Release Date - 29 November 2015*

* Improved compatibility with other plugins/themes using a [shared action hook for menu item fields](https://core.trac.wordpress.org/ticket/18584#comment:37)
* Enhancement - show visibility status in menu item titles

= 0.3 =

* Plugin icon
* Set as compatible with WordPress 4

= 0.2.1 =

Minor fixes

* [Fix](https://twitter.com/joesegal/status/480386235249082368) - Editing menus - show/hide conditions when adding new item (thanks [Joseph Segal](https://twitter.com/joesegal))

= 0.2 =

Update for compatibility with newer versions of WordPress

* [Feature](http://wordpress.org/support/topic/new-feature-power-to-the-conditions) - access to menu item object in condition callback (thanks [BramNL](http://wordpress.org/support/profile/bramnl))
* [Fix](http://wordpress.org/support/topic/save-is-requested-before-leaving-menu-page) - alert for leaving page even if no changes were made for menus (thanks [Denny](http://wordpress.org/support/profile/ddahly))
* Fix - update method in `Walker_Nav_Menu_Edit` to be compatible with newer version of WP
* [Fix](http://wordpress.org/support/topic/bugfix-for-readmetxt) - example in Readme (thanks [BramNL](http://wordpress.org/support/profile/bramnl))

= 0.1 =
* Plugin release. Included basic menu conditional statements

== Upgrade Notice ==

= 0.9 =
Starting with If Menu v0.9, PHP version is required to be at least 5.4. Make sure the PHP version on your site is higher than this before upgrading
