Skip to:
Content

BuddyPress.org

Ticket #6509: 6509.03.patch

File 6509.03.patch, 4.0 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..b60e70a 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 ( 'bp_loggedin_nav' === $obj_name ) {
     955                $bp_items = bp_nav_menu_get_loggedin_pages();
     956        } elseif ( 'bp_loggedout_nav' === $obj_name ) {
     957                $bp_items = bp_nav_menu_get_loggedout_pages();
     958        } else {
     959                return $items;
     960        }
     961
     962        foreach ( $bp_items as $bp_item ) {
     963                $items[] = array(
     964                        'id'         => "bp-{$bp_item->post_excerpt}",
     965                        'title'      => html_entity_decode( $bp_item->post_title, ENT_QUOTES, get_bloginfo( 'charset' ) ),
     966                        'type'       => $obj_type,
     967                        'url'        => esc_url_raw( $bp_item->guid ),
     968                        'classes'    => "bp-menu bp-{$bp_item->post_excerpt}-nav",
     969                        'type_label' => __( 'Custom Link', 'buddypress' ),
     970                        'object'     => $obj_name,
     971                        'object_id'  => -1,
     972                );
     973        }
     974
     975        return array_slice( $items, 10 * $page, 10 );
     976}
     977add_filter( 'customize_nav_menu_available_items', 'bp_customizer_nav_menus_get_items', 10, 4 );
     978
     979/**
     980 * Set BuddyPress item navs for the customizer
     981 *
     982 * NB: this will only work if WP_Customize_Nav_Menus->available_item_types()
     983 * includes a filter to let plugins set specific item navs.
     984 * @see WordPress ticket https://core.trac.wordpress.org/ticket/32708
     985 *
     986 * @since  BuddyPress (2.4.0)
     987 *
     988 * @param  array $item_types an associative array structured for the customizer
     989 */
     990function bp_customizer_nav_menus_set_item_types( $item_types = array() ) {
     991        $item_types['bp_nav'] = array(
     992                'bp_loggedin_nav' => array(
     993                        'title'  => __( 'BuddyPress (logged-in)', 'buddypress' ),
     994                        'object' => 'bp_nav',
     995                        'type'   => 'bp_loggedin_nav',
     996                ),
     997                'bp_loggedout_nav' => array(
     998                        'title'  => __( 'BuddyPress (logged-out)', 'buddypress' ),
     999                        'object' => 'bp_nav',
     1000                        'type'   => 'bp_loggedout_nav',
     1001                ),
     1002        );
     1003
     1004        return $item_types;
     1005}
     1006add_filter( 'customize_nav_menu_available_item_types', 'bp_customizer_nav_menus_set_item_types', 10, 1 );
     1007
     1008/**
    9271009 * Filter SQL query strings to swap out the 'meta_id' column.
    9281010 *
    9291011 * WordPress uses the meta_id column for commentmeta and postmeta, and so