如何在WordPress中更改查询搜索

6xfqseft  于 2023-10-17  发布在  WordPress
关注(0)|答案(3)|浏览(119)

我有一个拥有超过20万篇文章的重型网站在WordPress中搜索时,这个搜索在标题、内容和摘录中寻找所需的单词在这个数量的文章中,慢查询的结果超过50秒,拖慢了MariaDB
我想写一个过滤器来限制这个查询只有标题
我认为这个缓慢的查询将得到修复,问题将得到解决请帮助写这个过滤器或帮助,如果你知道这个问题可以通过另一种解决方案解决谢谢
在文件wp-includes/class-wp-query.php中
我也有这个问题,在管理面板,搜索的职位和照片库,有超过250,000张照片

ercv8c1e

ercv8c1e1#

你能试试这个代码,让我知道如果它的工作。

function limit_search_to_titles($query) {
if ($query->is_search && !is_admin()) {
    $query->set('post_type', 'post'); // Adjust 'post' to match your custom post types if needed
    $query->set('posts_per_page', -1); // Include all results, you can limit this if necessary
    $query->set('s', ''); // Clear the search term
    $query->set('title', $query->query_vars['s']); // Set the title to the search term
} } add_action('pre_get_posts', 'limit_search_to_titles');
zzwlnbp8

zzwlnbp82#

你可以用这个

function custom_search_query( $query ) {
    if ( $query->is_search && ! is_admin() ) {
        
        $query->set( 'post_type', 'post' ); 
        $query->set( 'posts_per_page', -1 );
        $query->set( 's', get_query_var( 's' ) ); 

        // Modify the search query to search only in post titles.
        $query->set( 'title', true );
    }
}
add_action( 'pre_get_posts', 'custom_search_query' );
6vl6ewon

6vl6ewon3#

我删除了1632到1636行的代码

// Sentence match in 'post_content' and 'post_excerpt'.
if ( $like ) {
   $search_orderby .= $wpdb->prepare( "WHEN {$wpdb->posts}.post_excerpt LIKE %s THEN 4 ", $like );
   $search_orderby .= $wpdb->prepare( "WHEN {$wpdb->posts}.post_content LIKE %s THEN 5 ", $like );
}

并更改行1426

$default_search_columns = array( 'post_title', 'post_excerpt', 'post_content' );

$default_search_columns = array( 'post_title' );

我认为这个问题已经解决了有人可以通过写一个过滤器来做到这一点,这样它就不会在WordPress的下一次更新中造成问题吗?

相关问题