Making WordPress.org

Changeset 13349


Ignore:
Timestamp:
03/15/2024 07:16:32 AM (2 years ago)
Author:
dd32
Message:

wporg-plugins-2024: Attempt to support retaining the filters for searches.

This has many rough edges, as the UI doesn't match the WordPress template heirachy that was never designed for combination views.

Location:
sites/trunk/wordpress.org/public_html/wp-content
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-directory.php

    r13332 r13349  
    10221022                break;
    10231023
     1024            case 'ratings':
     1025                $wp_query->query_vars['orderby'] = 'num_ratings';
     1026                // Fall through.
    10241027            case 'num_ratings':
    1025             case 'ratings':
    10261028                $wp_query->query_vars['meta_query']['num_ratings'] ??= [
    10271029                    'key'     => 'num_ratings',
     
    10301032                    'value'   => 0,
    10311033                ];
    1032 
    1033                 $wp_query->query_vars['orderby']  = 'num_ratings';
    10341034                break;
    10351035
    10361036            case '_active_installs':
     1037                $wp_query->query_vars['orderby']  = 'active_installs';
     1038                // Fall through.
    10371039            case 'active_installs':
    10381040                $wp_query->query_vars['meta_query']['active_installs'] ??= [
     
    10411043                    'compare' => 'EXISTS'
    10421044                ];
    1043 
    1044                 $wp_query->query_vars['orderby']  = 'active_installs';
    10451045                break;
    10461046
     
    10671067                    'compare' => 'EXISTS',
    10681068                ];
    1069                 $wp_query->query_vars['orderby']  = 'downloads';
    10701069                break;
    10711070        }
     
    14681467        // New-style search links.
    14691468        if ( get_query_var( 's' ) && isset( $_GET['s'] ) ) {
    1470             $url = site_url( '/search/' . urlencode( get_query_var( 's' ) ) . '/' );
    1471             if ( get_query_var( 'block_search' ) ) {
    1472                 $url = add_query_arg( 'block_search', get_query_var( 'block_search' ), $url );
     1469            $url        = site_url( '/search/' . urlencode( get_query_var( 's' ) ) . '/' );
     1470            $query_vars = array_filter( $wp_query->query );
     1471
     1472            // Don't need the search..
     1473            unset( $query_vars['s'] );
     1474
     1475            // Temporary: Disable sorts for search.
     1476            unset( $query_vars['order'], $query_vars['orderby'] );
     1477
     1478            if ( ! empty( $query_vars ) ) {
     1479                $url = add_query_arg( $query_vars, $url );
    14731480            }
    14741481
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins-2024/inc/block-config.php

    r13345 r13349  
    130130        $values = (array) $values;
    131131        foreach ( $values as $value ) {
    132             // Support for tax archives... TODO Hacky..
    133             // Realistically we should just ditch these and have all of the filters hit /search/?stuff=goes&here
    134             if ( is_tax() && $value === ( get_queried_object()->slug ?? '' ) ) {
     132            if ( is_search() && 's' === $query_var ) {
    135133                continue;
    136             } elseif ( is_search() && 's' === $query_var ) {
     134            } elseif ( 'plugin_tags' === $query_var ) {
     135                // We don't support tags yet as a filter.
    137136                continue;
     137            } elseif ( 'browse' === $query_var ) {
     138                // Don't retain if there's no actual items in the section (ie. it's dynamic).
     139                $term = get_term_by( 'slug', $value, 'plugin_section' );
     140                if ( ! $term || ! $term->count ) {
     141                    continue;
     142                }
    138143            }
    139144
     
    146151    }
    147152
     153    // If this is a block directory search, that needs to be retained too.
     154    if ( is_search() && get_query_var( 'block_search' ) ) {
     155        echo '<input type="hidden" name="block_search" value="1" />';
     156    }
     157
    148158}
    149159
     
    153163
    154164/**
    155  * Filters the search block to remove required attribute.
     165 * Filters the search block to remove the required attribute, and add the query fields.
    156166 *
    157167 * @param string $block_content
     
    164174    }
    165175
    166     return preg_replace( '/(<input[^>]*)\s+required\s*([^>]*)>/', '$1$2>', $block_content );
     176    // Remove the required attribute
     177    $block_content = preg_replace( '/(<input[^>]*)\s+required\s*([^>]*)>/', '$1$2>', $block_content );
     178
     179    // Insert the current query filters into the search form.
     180    ob_start();
     181    wporg_query_filter_in_form( 's' );
     182    $block_content = str_replace( '</form>', ob_get_clean() . '</form>', $block_content );
     183
     184    return $block_content;
    167185}
Note: See TracChangeset for help on using the changeset viewer.