Skip to content

Function

Set up TML action nav menu items.

tml_setup_nav_menu_item( object $menu_item )

Parameters

$menu_item object
The menu item object.

Return

object The menu item object.

Source

function tml_setup_nav_menu_item( $menu_item ) {
    // Item to be added
    if ( $menu_item instanceof Theme_My_Login_Action ) {
        $menu_item = (object) array(
            'ID'               => 0,
            'db_id'            => 0,
            'menu_item_parent' => 0,
            'post_parent'      => 0,
            'type'             => 'tml_action',
            'type_label'       => __( 'TML Action', 'theme-my-login' ),
            'object'           => $menu_item->get_name(),
            'object_id'        => -1, // Needed for AJAX save to work
            'title'            => $menu_item->get_title(),
            'url'              => $menu_item->get_url(),
            'target'           => '',
            'attr_title'       => '',
            'description'      => '',
            'classes'          => array(),
            'xfn'              => '',
        );

        // Existing menu item
    } elseif ( 'tml_action' === $menu_item->type ) {
        $menu_item->object_id  = $menu_item->ID;
        $menu_item->type_label = __( 'TML Action', 'theme-my-login' );
        $action                = tml_get_action( $menu_item->object );
        if ( ! $action ) {
            $menu_item->_invalid = true;
        } else {
            $menu_item->url = $action->get_url();
            if ( 'logout' === $menu_item->object ) {
                $menu_item->url = wp_nonce_url( $menu_item->url, 'log-out' );
            }
            if ( ! is_admin() && ! $action->show_nav_menu_item ) {
                $menu_item->_invalid = true;
            }
        }

        // Legacy menu item
    } elseif ( 'page' === $menu_item->object ) {
        $slug   = get_post_field( 'post_name', $menu_item->object_id );
        $action = tml_get_action( $slug );
        if ( $action ) {
            if ( 'logout' === $action->get_name() ) {
                $menu_item->url = wp_nonce_url( $action->get_url(), 'log-out' );
            }
            if ( ! is_admin() && ! $action->show_nav_menu_item ) {
                $menu_item->_invalid = true;
            }
        }
    }

    return $menu_item;
}

Uses

Changelog

VersionDescription
7.0 Introduced.