Making WordPress.org

Changeset 13451

Timestamp:
04/04/2024 02:56:19 AM (4 months ago)
Author:
dufresnesteven
Message:

wporg-plugins-2024: Manually set category current item for browse/tag views.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins-2024/inc/block-config.php

    r13437 r13451  
    1919 */
    2020function add_site_navigation_menus( $menus ) {
    21    
     21    global $wp;
     22
     23    $url = 'https://' . $_SERVER['HTTP_HOST'] . parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH );
     24
    2225    $items = array(
    2326        'plugins' => array(
     
    3841            array(
    3942                'label' => __( 'Community', 'wporg-plugins' ),
    40                 'url'   => is_search() ? esc_url( get_search_link() . '?plugin_business_model=community' ) :  home_url( '?plugin_business_model=community' ),
     43                'url'   => is_search() ? esc_url( get_search_link() . '?plugin_business_model=community' ) :  '?plugin_business_model=community' ),
    4144                'term'  => get_term_by( 'slug', 'community', 'plugin_business_model' ),
    4245            ),
    4346            array(
    4447                'label' => __( 'Commercial', 'wporg-plugins' ),
    45                 'url'   =>  is_search() ? esc_url( get_search_link() . '?plugin_business_model=commercial' ) : home_url( '?plugin_business_model=commercial' ),
     48                'url'   => '?plugin_business_model=commercial' ),
    4649                'term'  => get_term_by( 'slug', 'commercial', 'plugin_business_model' ),
    4750            ),
     
    247250    }
    248251
    249     // If we have a business model selected, the navigation block will select appropriately.
    250     if ( ! isset( $wp_query ) || isset( $wp_query->query['plugin_business_model'] ) ) {
     252    if ( get_query_var( 'plugin_business_model' ) ) {
     253
     254        // The menu doesn't select properly if viewing /tags/ or /browse/.
     255        if ( get_query_var( 'browse' ) || get_query_var( 'plugin_tags' ) ) {
     256            $tags = new \WP_HTML_Tag_Processor( $block_content );
     257           
     258            while ( $tags->next_tag( 'li' ) ) {
     259                $tags->set_bookmark( 'parent-li' );
     260                $tags->next_tag( 'a' );
     261
     262                if ( 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] === $tags->get_attribute( 'href' ) ) {
     263                    $tags->seek( 'parent-li' );
     264                    $tags->add_class( 'current-menu-item' );
     265                    break;
     266                }
     267            }
     268
     269            return $tags->get_updated_html();
     270        }
     271
    251272        return $block_content;
    252273    }
     
    254275    $tag_processor = new \WP_HTML_Tag_Processor( $block_content );
    255276
    256     if ( $tag_processor->next_tag( 'ul' )) {
     277    // Find the first li item and select it.
     278    if ( $tag_processor->next_tag( 'ul' ) ) {
    257279        if ( $tag_processor->next_tag( 'li' ) ) {
    258280            $tag_processor->add_class( 'current-menu-item' );
    259         }
    260 
    261         return $tag_processor->get_updated_html();
     281
     282            return $tag_processor->get_updated_html();
     283       
    262284    }
    263285
Note: See TracChangeset for help on using the changeset viewer.