| | 939 | * Populate BuddyPress item navs for the customizer |
| | 940 | * |
| | 941 | * NB: this will only work if WP_Customize_Nav_Menus->load_available_items_query() |
| | 942 | * includes a filter to let plugins get specific item navs. |
| | 943 | * @see WordPress ticket https://core.trac.wordpress.org/ticket/32708 |
| | 944 | * |
| | 945 | * @since BuddyPress (2.4.0) |
| | 946 | * |
| | 947 | * @param array $items The array of menu items |
| | 948 | * @param string $obj_type The requested type |
| | 949 | * @param string $obj_name The requested object name |
| | 950 | * @param integer $page The page num being requested |
| | 951 | * @return array The current page number. |
| | 952 | */ |
| | 953 | function bp_customizer_nav_menus_get_items( $items = array(), $obj_type = '', $obj_name = '', $page = 0 ) { |
| | 954 | if ( 0 !== $page || 'bp_nav' !== $obj_type ) { |
| | 955 | return $items; |
| | 956 | } |
| | 957 | |
| | 958 | if ( 'bp_loggedin_nav' === $obj_name ) { |
| | 959 | $bp_items = bp_nav_menu_get_loggedin_pages(); |
| | 960 | } elseif ( 'bp_loggedout_nav' === $obj_name ) { |
| | 961 | $bp_items = bp_nav_menu_get_loggedout_pages(); |
| | 962 | } else { |
| | 963 | return $items; |
| | 964 | } |
| | 965 | |
| | 966 | foreach ( $bp_items as $bp_item ) { |
| | 967 | $items[] = array( |
| | 968 | 'id' => "bp-{$bp_item->post_excerpt}", |
| | 969 | 'title' => html_entity_decode( $bp_item->post_title, ENT_QUOTES, get_bloginfo( 'charset' ) ), |
| | 970 | 'type' => $obj_type, |
| | 971 | 'url' => esc_url_raw( $bp_item->guid ), |
| | 972 | 'classes' => array( 'bp-menu', "bp-{$bp_item->post_excerpt}-nav" ), |
| | 973 | 'type_label' => __( 'Custom Link', 'buddypress' ), |
| | 974 | 'object' => $obj_name, |
| | 975 | 'object_id' => -1, |
| | 976 | ); |
| | 977 | } |
| | 978 | |
| | 979 | return $items; |
| | 980 | } |
| | 981 | add_filter( 'customize_nav_menu_available_items', 'bp_customizer_nav_menus_get_items', 10, 4 ); |
| | 982 | |
| | 983 | /** |
| | 984 | * Set BuddyPress item navs for the customizer |
| | 985 | * |
| | 986 | * NB: this will only work if WP_Customize_Nav_Menus->available_item_types() |
| | 987 | * includes a filter to let plugins set specific item navs. |
| | 988 | * @see WordPress ticket https://core.trac.wordpress.org/ticket/32708 |
| | 989 | * |
| | 990 | * @since BuddyPress (2.4.0) |
| | 991 | * |
| | 992 | * @param array $item_types an associative array structured for the customizer |
| | 993 | */ |
| | 994 | function bp_customizer_nav_menus_set_item_types( $item_types = array() ) { |
| | 995 | $item_types['bp_nav'] = array( |
| | 996 | 'bp_loggedin_nav' => array( |
| | 997 | 'title' => __( 'BuddyPress (logged-in)', 'buddypress' ), |
| | 998 | 'object' => 'bp_nav', |
| | 999 | 'type' => 'bp_loggedin_nav', |
| | 1000 | ), |
| | 1001 | 'bp_loggedout_nav' => array( |
| | 1002 | 'title' => __( 'BuddyPress (logged-out)', 'buddypress' ), |
| | 1003 | 'object' => 'bp_nav', |
| | 1004 | 'type' => 'bp_loggedout_nav', |
| | 1005 | ), |
| | 1006 | ); |
| | 1007 | |
| | 1008 | return $item_types; |
| | 1009 | } |
| | 1010 | add_filter( 'customize_nav_menu_available_item_types', 'bp_customizer_nav_menus_set_item_types', 10, 1 ); |
| | 1011 | |
| | 1012 | /** |