| | 927 | * Populate BuddyPress item navs for the customizer |
| | 928 | * |
| | 929 | * NB: this will only work if WP_Customize_Nav_Menus->ajax_load_available_items() |
| | 930 | * includes a filter to let plugins get specific item navs. |
| | 931 | * @see WordPress ticket https://core.trac.wordpress.org/ticket/32708 |
| | 932 | * |
| | 933 | * @since BuddyPress (?) |
| | 934 | * |
| | 935 | * @param array $items an empty array |
| | 936 | * @param string $type the requested type |
| | 937 | * @param integer $page the page num being requested |
| | 938 | * @return array a list of bp nav items structured for the customizer |
| | 939 | */ |
| | 940 | function bp_customizer_nav_menus_get_items( $items = array(), $type = '', $page = 0 ) { |
| | 941 | if ( 0 !== $page ) { |
| | 942 | return $items; |
| | 943 | } |
| | 944 | |
| | 945 | if ( 'bp_loggedin_nav' === $type ) { |
| | 946 | $bp_items = bp_nav_menu_get_loggedin_pages(); |
| | 947 | } elseif( 'bp_loggedout_nav' === $type ) { |
| | 948 | $bp_items = bp_nav_menu_get_loggedout_pages(); |
| | 949 | } else { |
| | 950 | return $items; |
| | 951 | } |
| | 952 | |
| | 953 | foreach( $bp_items as $bp_item ) { |
| | 954 | $items[] = array( |
| | 955 | 'id' => "bp-{$bp_item->post_excerpt}", |
| | 956 | 'title' => html_entity_decode( $bp_item->post_title, ENT_QUOTES, get_bloginfo( 'charset' ) ), |
| | 957 | 'type' => 'custom', |
| | 958 | 'url' => esc_url_raw( $bp_item->guid ), |
| | 959 | 'classes' => array( 'bp-menu', "bp-{$bp_item->post_excerpt}-nav" ), |
| | 960 | 'type_label' => __( 'BuddyPress nav', 'buddypress' ), |
| | 961 | 'object' => 'bp_nav', |
| | 962 | 'object_id' => -1, |
| | 963 | ); |
| | 964 | } |
| | 965 | |
| | 966 | return $items; |
| | 967 | } |
| | 968 | add_filter( 'customizer_nav_menus_bp_nav_get_items', 'bp_customizer_nav_menus_get_items', 10, 3 ); |
| | 969 | |
| | 970 | /** |
| | 971 | * Set BuddyPress item navs for the customizer |
| | 972 | * |
| | 973 | * NB: this will only work if WP_Customize_Nav_Menus->available_item_types() |
| | 974 | * includes a filter to let plugins set specific item navs. |
| | 975 | * @see WordPress ticket https://core.trac.wordpress.org/ticket/32708 |
| | 976 | * |
| | 977 | * @since BuddyPress (?) |
| | 978 | * |
| | 979 | * @param array $item_types an associative array structured for the customizer |
| | 980 | */ |
| | 981 | function bp_customizer_nav_menus_set_item_types( $item_types = array() ) { |
| | 982 | $item_types['bp_nav'] = array( |
| | 983 | 'bp_loggedin_nav' => array( |
| | 984 | 'label' => __( 'BuddyPress (logged-in)', 'buddypress' ), |
| | 985 | 'name' => 'bp_loggedin_nav', |
| | 986 | 'type' => 'bp_nav', |
| | 987 | ), |
| | 988 | 'bp_loggedout_nav' => array( |
| | 989 | 'label' => __( 'BuddyPress (logged-out)', 'buddypress' ), |
| | 990 | 'name' => 'bp_loggedout_nav', |
| | 991 | 'type' => 'bp_nav', |
| | 992 | ), |
| | 993 | ); |
| | 994 | |
| | 995 | return $item_types; |
| | 996 | } |
| | 997 | add_filter( 'customizer_nav_menus_item_types', 'bp_customizer_nav_menus_set_item_types', 10, 1 ); |
| | 998 | |
| | 999 | /** |