首页 > 解决方案 > Wp_query Search (S) 参数搜索带有分隔词的字符串的问题

问题描述

我正在使用 's' 参数生成 Wp_query 以将特定字符串搜索到内容中。

我的问题是这个字符串有一个空格。

我的 $args 配置:

 $argsPaged = array(
            // Get the "resources_network" post type.
            'post_type' => 'resources_network',
            'posts_per_page' => $per_page,
            'paged' => $start,
            'post_status' => 'publish',
            'tax_query' => array(
                'relation' => 'AND',
                array(
                    'taxonomy' => 'rnet_category', 
                    'field'    => 'term_id',
                    'terms'    =>  array( $categoryid )
                )
             ),
            's' => esc_attr($texttosearch)
        );

$wpq = new WP_Query( $argsPaged );

例如,当 $texttosearch = "E-LEARNING 6" 时,查询结果为:

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1 AND ( wp_term_relationships.term_taxonomy_id IN (72) ) AND (((wp_posts.post_title LIKE '%E-LEARNING%') OR (wp_posts.post_excerpt LIKE '%E-LEARNING%') OR (wp_posts.post_content LIKE '%E-LEARNING%')) AND ((wp_posts.post_title LIKE '%6%') OR (wp_posts.post_excerpt LIKE '%6%') OR (wp_posts.post_content LIKE '%6%'))) AND wp_posts.post_type = 'resources_network' AND ((wp_posts.post_status = 'publish')) GROUP BY wp_posts.ID ORDER BY (CASE WHEN wp_posts.post_title LIKE '%E-LEARNING 6%' THEN 1 WHEN wp_posts.post_title LIKE '%E-LEARNING%' AND wp_posts.post_title LIKE '%6%' THEN 2 WHEN wp_posts.post_title LIKE '%E-LEARNING%' OR wp_posts.post_title LIKE '%6%' THEN 3 WHEN wp_posts.post_excerpt LIKE '%E-LEARNING 6%' THEN 4 WHEN wp_posts.post_content LIKE '%E-LEARNING 6%' THEN 5 ELSE 6 END), wp_posts.post_date DESC LIMIT 0, 3

我将生成的字符串替换为 "{5a92e13925a303d097056a5017e22dfb76290b661a9b5cf9d34f0c78e887b4d4}" 为 "%" 。

问题是它在搜索标题时将“E-LEARNING”与“6”分开,我不知道为什么。

一些配置参数来解决这个问题?我在任何地方都找不到解决方案

谢谢

标签: wordpress

解决方案


推荐阅读