LLMS_Nav_Menus::filter_nav_items( array $items )

Filters Nav Menu Items to convert #llms- urls into actual URLs.


Description Description

Also hides URLs that should only be available to logged-in users.


Top ↑

Parameters Parameters

$items

(array) (Required) Nav menu items.


Top ↑

Return Return

(array)


Top ↑

Source Source

File: includes/class.llms.nav.menus.php

	public function filter_nav_items( $items ) {

		$urls = array(
			'#llms-signout',
			'#llms-signin',
		);

		foreach ( $items as $i => $data ) {
			$is_object = is_object( $data ) && property_exists( $data, 'url' );
			$url       = $is_object ? $data->url : $data['url'] ?? '';

			if ( ! in_array( $url, $urls, true ) ) {
				continue;
			}

			$data      = (object) $data;
			$logged_in = is_user_logged_in();

			if ( '#llms-signin' === $url && ! $logged_in ) {
				$data->url = llms_get_page_url( 'myaccount' );
			} elseif ( '#llms-signout' === $url && $logged_in ) {
				$data->url = wp_logout_url( llms_get_page_url( 'myaccount' ) );
			} else {
				unset( $items[ $i ] );
				continue;
			}

			$items[ $i ] = $is_object ? $data : (array) $data;
		}

		return $items;
	}


Top ↑

Changelog Changelog

Changelog
Version Description
7.2.0 Remove passing item data by reference and improve URL checks.
3.37.12 Use in_array with strict types comparison.
3.14.7 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

You must log in before being able to contribute a note or feedback.