2017-02-07 6 views
0

私はこのような検索クエリを設定しました:句読点を無視するWordPress検索クエリを作成しますか?

<?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(); 
?> 

それは私がタイトルに句読点が含まれているポストを探していたときを除いて、素晴らしい作品。たとえば、タイトルが「マークのブック」で、「マークの」と「マーク」を使用している場合は、結果が返されません。

「マーク」を検索すると表示されますが、上記のキーワードのいずれかを使用しても検索できます。

句読点と互換性がある限り、何か簡単なことはありますか?

+0

''s' => $ s 'を' 's' => addslashes($ s)、' 'で置き換えてみてください。 –

答えて

1

デフォルトのget_search_query()は、esc_attr()のデータを渡して、html属性に配置するのが安全であることを保証します。あなたは(esc_attrをオフにしたい場合)、このコードを試してみてください、

$s = get_search_query(false); 

が、それはあなたに

+0

ありがとうございます。これは私に半分の道を与えます。 "Mark's Book"というポスト名の私の元の例では、この変更で "mark's"の検索は機能しますが、アポストロフィを省略して "marks"を使って検索すると結果は得られません。 – Koda

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によってアクセスされていると仮定しています。
コードがテストされ、動作します。
これが役立つことを願っています!

+0

助けてくれてありがとう!他の答えと同じように、これは私にとって半分です。投稿名「Mark's Book」では、このコードは検索語「mark's」で動作するようになりましたが、アポストロフィ「 "marks"」で検索しても結果は返されません。 – Koda

関連する問題