构建一个忽略标点符号的WordPress搜索查询?

时间:2017-02-07 07:34:48

标签: php wordpress search punctuation

我已经设置了这样的搜索查询:

<?php
$s = get_search_query();
$args = array(
    'post_type' => array('post'),
    'posts_per_page' => '10',
    'order' => 'DESC',
    'orderby' => 'date',
    's' => $s,
    'paged' => $paged
);
$query_search = new WP_Query($args);
if ($query_search->have_posts())
{
    while ($query_search->have_posts())
    {
        $query_search->the_post();
    }
}
wp_reset_postdata();
?>

它非常有用,除非我正在搜索标题中包含标点符号的帖子。例如,如果标题是“Mark's Book”,则使用“mark's”和“marks”都不会返回任何结果。

如果我只是搜索“标记”,它会出现,但我想要上述任意一个关键字来检索帖子。

是否有一些简单的东西让我与标点符号兼容?

2 个答案:

答案 0 :(得分:1)

默认get_search_query()传递esc_attr()上的数据,以确保放置在html属性中是安全的。如果你想关闭esc_attr()然后尝试这个代码,

$s = get_search_query( false );

可能会帮助你

答案 1 :(得分:0)

你可以这样试试:

$s = get_query_var('s');
$s = addslashes($s); //<-- even if you remove this the query will work
$args = array(
    'post_type' => array('post'),
    'posts_per_page' => '10',
    'order' => 'DESC',
    'orderby' => 'date',
    's' => $s,
    'paged' => $paged
);
$query_search = new WP_Query($args);
print_r($query_search->posts);

请注意:我假设查询字符串由s访问。
代码经过测试并起作用 希望这有帮助!