bp_nouveau_parse_hooked_dir_nav( string $hook = '', string $component = '', int $position = 99 )
Parse an html output to a list of component’s directory nav item.
Description
Parameters
- $hook
-
(Optional) The hook to fire.
Default value: ''
- $component
-
(Optional) The component nav belongs to.
Default value: ''
- $position
-
(Optional) The position of the nav item.
Default value: 99
Return
(array) A list of component's dir nav items
Source
File: bp-templates/bp-nouveau/includes/functions.php
function bp_nouveau_parse_hooked_dir_nav( $hook = '', $component = '', $position = 99 ) { $extra_nav_items = array(); if ( empty( $hook ) || empty( $component ) || ! has_action( $hook ) ) { return $extra_nav_items; } // Get the hook output. ob_start(); /** * Fires at the start of the output for `bp_nouveau_parse_hooked_dir_nav()`. * * This hook is variable and depends on the hook parameter passed in. * * @since BuddyPress 3.0.0 */ do_action( $hook ); $output = ob_get_clean(); if ( empty( $output ) ) { return $extra_nav_items; } preg_match_all( "/<li\sid=\"{$component}\-(.*)\"[^>]*>/siU", $output, $lis ); if ( empty( $lis[1] ) ) { return $extra_nav_items; } $extra_nav_items = array_fill_keys( $lis[1], array( 'component' => $component, 'position' => $position ) ); preg_match_all( '/<a\s[^>]*>(.*)<\/a>/siU', $output, $as ); if ( ! empty( $as[0] ) ) { foreach ( $as[0] as $ka => $a ) { $extra_nav_items[ $lis[1][ $ka ] ]['slug'] = $lis[1][ $ka ]; $extra_nav_items[ $lis[1][ $ka ] ]['text'] = $as[1][ $ka ]; preg_match_all( '/([\w\-]+)=([^"\'> ]+|([\'"]?)(?:[^\3]|\3+)+?\3)/', $a, $attrs ); if ( ! empty( $attrs[1] ) ) { foreach ( $attrs[1] as $katt => $att ) { if ( 'href' === $att ) { $extra_nav_items[ $lis[1][ $ka ] ]['link'] = trim( $attrs[2][ $katt ], '"' ); } else { $extra_nav_items[ $lis[1][ $ka ] ][ $att ] = trim( $attrs[2][ $katt ], '"' ); } } } } } if ( ! empty( $as[1] ) ) { foreach ( $as[1] as $ks => $s ) { preg_match_all( '/<span>(.*)<\/span>/siU', $s, $spans ); if ( empty( $spans[0] ) ) { $extra_nav_items[ $lis[1][ $ks ] ]['count'] = false; } elseif ( ! empty( $spans[1][0] ) ) { $extra_nav_items[ $lis[1][ $ks ] ]['count'] = (int) $spans[1][0]; } else { $extra_nav_items[ $lis[1][ $ks ] ]['count'] = ''; } } } return $extra_nav_items; }
Changelog
Version | Description |
---|---|
BuddyPress 3.0.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.