• The released version:
    1. throws an error on a new menu item
    2. sets the default for a new menu item to be the membership level of not logged in
    3. displays all of the membership levels in the Under navigation link.

    The following code changes that:
    function add_swpm_fields( $id, $item, $depth, $args ) {

    //// Logged levels
    $levels = $this->get_membership_levels();

    $item_groups = get_post_meta( $item->ID, self::META_KEY_NAME, true );

    ?>
    <p class=”description description-wide menu-item-actions”>
    Membership groups permitted :
    <?php foreach($levels as $level)
    {
    $key = self::META_KEY_NAME.’-‘.$level->id;
    $name = sprintf( ‘%s[%s]’, $key, $item->ID );
    // Handle the case where there is no array because it is a new menu item that has been added.
    // In this case checkall of the member levels since it is more likely to be included than not.
    if ( is_array( $item_groups ) ) {
    $checked = in_array($level->id, $item_groups) || (count($item_groups) == 0 && $level->id == self::NOT_LOGGED_IN_LEVEL_ID) ? “checked” : “”;
    } else {
    $checked = “checked”;
    }

    // If the class menu-item-title is used then this is perceived to be a menu item that can be moved and will cause the
    // Under link to include all of the member leves. Not good.
    ?>
    <label class=”swpm-menu-item-title” style=”padding-top:8px;padding-bottom:8px;”>
    <?php printf(
    ‘<input type=”checkbox” class=”menu-item-checkbox” name=”%3$s” value=”%1$s” %4$s> %2$s’,
    $level->id,
    $level->alias,
    $name,
    $checked); ?>
    </label>
    <?php } ?>
    </p>
    <?php
    }

    https://www.ads-software.com/plugins/simple-membership-menu/

  • The topic ‘Fix problems with add_swpm_fields’ is closed to new replies.