Skip to:
Content

BuddyPress.org

Ticket #6509: 6509.02.patch

File 6509.02.patch, 4.1 KB (added by imath, 6 years ago)
  • src/bp-core/bp-core-filters.php

    diff --git src/bp-core/bp-core-filters.php src/bp-core/bp-core-filters.php
    index 9f0d359..a08a7be 100644
    function bp_setup_nav_menu_item( $menu_item ) { 
    859859                return $menu_item;
    860860        }
    861861
     862        // Prevent a notice error when using the customizer
     863        $menu_classes = $menu_item->classes;
     864
     865        if ( is_array( $menu_classes ) ) {
     866                $menu_classes = implode( ' ', $menu_item->classes);
     867        }
     868
    862869        // We use information stored in the CSS class to determine what kind of
    863870        // menu item this is, and how it should be treated
    864         preg_match( '/\sbp-(.*)-nav/', implode( ' ', $menu_item->classes), $matches );
     871        preg_match( '/\sbp-(.*)-nav/', $menu_classes, $matches );
    865872
    866873        // If this isn't a BP menu item, we can stop here
    867874        if ( empty( $matches[1] ) ) {
    function bp_setup_nav_menu_item( $menu_item ) { 
    915922        } else {
    916923                $current = bp_get_requested_url();
    917924                if ( strpos( $current, $menu_item->url ) !== false ) {
    918                         $menu_item->classes[] = 'current_page_item';
     925                        if ( is_array( $menu_item->classes ) ) {
     926                                $menu_item->classes[] = 'current_page_item';
     927                                $menu_item->classes[] = 'current-menu-item';
     928                        } else {
     929                                $menu_item->classes = array( 'current_page_item', 'current-menu-item' );
     930                        }
    919931                }
    920932        }
    921933
    function bp_setup_nav_menu_item( $menu_item ) { 
    924936add_filter( 'wp_setup_nav_menu_item', 'bp_setup_nav_menu_item', 10, 1 );
    925937
    926938/**
     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 */
     953function 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}
     981add_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 */
     994function 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}
     1010add_filter( 'customize_nav_menu_available_item_types', 'bp_customizer_nav_menus_set_item_types', 10, 1 );
     1011
     1012/**
    9271013 * Filter SQL query strings to swap out the 'meta_id' column.
    9281014 *
    9291015 * WordPress uses the meta_id column for commentmeta and postmeta, and so