Changeset 11083
- Timestamp:
- 07/01/2021 12:19:51 AM (3 years ago)
- Location:
- sites/trunk/wordpress.org/public_html/wp-content
- Files:
-
- 1 deleted
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-performance-optimizations.php
r11027 r11083 32 32 33 33 // Redirect search results. 34 add_action( 'bbp_template_redirect', array( $this, 'redirect_search_results' ) ); 35 add_filter( 'pre_get_posts', array( $this, 'search_alterations' ) ); 36 add_filter( 'pre_get_posts', array( $this, 'search_forum_alterations' ) ); 37 add_filter( 'bbp_after_has_search_results_parse_args', array( $this, 'search_forum_alteration_args' ) ); 34 add_action( 'bbp_template_redirect', array( $this, 'redirect_search_results_to_google_search' ) ); 38 35 39 36 // Redirect (.+)/page/[01]/ and (.+)?paged=[01] to $1 … … 80 77 81 78 /** 82 * Redirects search results to appropriate place. 83 */ 84 public function redirect_search_results() { 85 if ( ! is_search() ) { 79 * Redirects search results to Google Custom Search. 80 */ 81 public function redirect_search_results_to_google_search() { 82 $is_wp_search = is_search(); 83 $is_bbp_search = bbp_is_search_results(); 84 85 if ( ! $is_wp_search && ! $is_bbp_search ) { 86 86 return; 87 87 } … … 91 91 } 92 92 93 $search_terms = get_search_query( false ); 94 95 $tab = $_GET['tab'] ?? 'support'; 96 if ( ! in_array( $tab, [ 'support', 'docs', 'plugin', 'theme', 'searchforum' ] ) ) { 97 $tab = 'support'; 98 } 99 100 switch ( $tab ) { 101 case 'theme': 102 case 'plugin': 103 case 'searchforum': 104 wp_safe_redirect( add_query_arg( $tab, $_GET[ $tab ], home_url( "/search/{$search_terms}/" ) ) ); 105 exit; 106 case 'support': 107 wp_safe_redirect( home_url( "/search/{$search_terms}/" ) ); 108 exit; 109 case 'docs': 110 // Do nothing. 111 } 112 } 113 114 /** 115 * Search alterations for forums. 116 */ 117 public function search_alterations( $query ) { 118 if ( ! is_search() || ! $query->is_search() ) { 119 return; 120 } 121 122 $query->set( 'post_type', [ 'page', 'helphub_article' ] ); 123 124 } 125 126 public function search_forum_alterations( $query ) { 127 if ( empty( $query->query['_bbp_search_query'] ) ) { 128 return; 129 } 130 131 // Limit searches to published topics. 132 $query->set( 'post_type', 'topic' ); 133 $query->set( 'post_status', 'publish' ); 134 135 // Limit to either the plugin/theme in question, or to general support threads. 136 if ( !empty( $_GET['plugin'] ) ) { 137 $query->set( 'tax_query', [ 138 [ 139 'taxonomy' => 'topic-plugin', 140 'field' => 'slug', 141 'terms' => [ $_GET['plugin'] ] 142 ] 143 ] ); 144 145 add_filter( 'posts_where', array( $this, 'posts_in_last_year' ) ); 146 } elseif ( ! empty( $_GET['theme'] ) ) { 147 $query->set( 'tax_query', [ 148 [ 149 'taxonomy' => 'topic-theme', 150 'field' => 'slug', 151 'terms' => [ $_GET['theme'] ] 152 ] 153 ] ); 154 155 add_filter( 'posts_where', array( $this, 'posts_in_last_year' ) ); 156 } elseif ( ! empty( $_GET['searchforum'] ) ) { 157 $query->set( 'post_parent', (int) $_GET['searchforum'] ); 158 159 add_filter( 'posts_where', array( $this, 'posts_in_last_year' ) ); 160 } else { 161 $query->set( 'post_parent__not_in', [21261, 21262, 21272] ); // Magic numbers: Plugins, Themes, Reviews 162 163 add_filter( 'posts_where', array( $this, 'posts_in_last_six_months' ) ); 164 } 165 } 166 167 public function search_forum_alteration_args( $args ) { 168 $args['_bbp_search_query'] = true; 169 170 return $args; 93 $search_terms = $search_url = ''; 94 95 if ( $is_bbp_search ) { 96 $search_terms = bbp_get_search_terms(); 97 } elseif ( $is_wp_search ) { 98 $search_terms = get_search_query( false ); 99 } 100 101 if ( isset( $_GET['intext'] ) ) { 102 $search_terms .= ' intext:"' . esc_attr( $_GET['intext'] ) . '"'; 103 } 104 105 if ( $search_terms ) { 106 $tab = ! empty( $_GET['tab'] ) && 'docs' === $_GET['tab'] ? 'docs' : 'forums'; 107 $search_url = sprintf( "https://wordpress.org/search/%s/?{$tab}=1", urlencode( $search_terms ) ); 108 $search_url = esc_url_raw( $search_url ); 109 } 110 111 if ( ! $search_url ) { 112 wp_safe_redirect( home_url( '/' ) ); 113 exit; 114 } 115 116 wp_safe_redirect( $search_url ); 117 exit; 171 118 } 172 119 -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-support/bbpress/loop-search.php
r11025 r11083 9 9 <?php if ( 'topic' === get_post_type() ) : ?> 10 10 11 <?php bbp_get_template_part( ' loop', 'single-topic' ); ?>11 <?php bbp_get_template_part( 'content', 'single-topic-lead' ); ?> 12 12 13 13 <?php else : ?> -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-support/searchform.php
r11061 r11083 17 17 <label for="s" class="screen-reader-text"><?php _ex( 'Search for:', 'label', 'wporg-forums' ); ?></label> 18 18 <?php 19 $placeholder = _x( 'Search forums', 'placeholder', 'wporg-forums' ); 20 $project = false; 21 $tab = 'support'; 22 19 $tab = null; 23 20 if ( in_array( current_action(), [ 'bbp_template_before_pagination_loop', 'wporg_compat_before_single_view' ] ) ) { 24 21 $placeholder = _x( 'Search this forum', 'placeholder', 'wporg-forums' ); 25 22 $project = wporg_support_get_compat_object(); 26 if ( $project ) {27 $tab = $project->type;28 $project = $project->post_name;29 } else {30 // Specific forum.31 $tab = 'searchforum';32 $project = bbp_get_forum_id();33 }34 23 } elseif ( is_front_page() ) { 35 24 $placeholder = _x( 'Search documentation', 'placeholder', 'wporg-forums' ); 25 $project = null; 36 26 $tab = 'docs'; 37 } elseif ( is_search() || bbp_is_search() ) { 38 if ( !empty( $_GET['tab'] ) ) { 39 $tab = $_GET['tab']; 40 $project = $_GET[ $_GET['tab'] ] ?? ''; 41 } 27 } else { 28 $placeholder = _x( 'Search forums', 'placeholder', 'wporg-forums' ); 29 $project = null; 42 30 } 43 31 ?> 44 <input type="search" id="s" class="search-field" placeholder="<?php echo esc_attr( $placeholder ); ?>" value="<?php echo esc_attr( get_query_var( 's' ) ?: get_query_var( 'bbp_search' ) )?>" name="s" />32 <input type="search" id="s" class="search-field" placeholder="<?php echo esc_attr( $placeholder ); ?>" value="<?php the_search_query(); ?>" name="s" /> 45 33 <?php if ( $project ) : ?> 46 <input type="hidden" name=" <?php echo esc_attr( $tab ); ?>" value="<?php echo esc_attr( $project); ?>" />34 <input type="hidden" name="intext" value="<?php echo esc_attr( $project->prefixed_title ); ?>" /> 47 35 <?php endif; ?> 48 36 <?php if ( $tab ) : ?>
Note: See TracChangeset
for help on using the changeset viewer.