WordPress4.4で新しくクエリが追加されました。
クエリ関係の機能は使いこなすことで自由な記事抽出を行うことができますので、多くの記事を扱う場合に大きな武器となります。
4.4で追加されたものはどのような機能なのか、どう使えばいいか試してみました。
ADs
スラッグが完全一致する記事を抽出できます。
post_name__inに渡す値は1件の場合でも配列でないといけません。
たとえば、スラッグが「hello-world」「hoge」の2記事を取得したい場合は以下のようにします。
※get_posts()を使う例ですがpre_get_posts()でも同様です。
1 2 3 4 5 6 7 8 9 |
$arg = array( 'post_name__in' => array('hello-world','hoge'); ); $posts = get_posts($arg); /* var_dump($posts); で見てみてください。 */ |
日本語の場合はurlencodeをしないとヒットしません。
1 2 3 4 5 6 7 8 9 |
$arg = array( 'post_name__in' => array(urlencode('これはスラッグです')); ); $posts = get_posts($arg); /* var_dump($posts); で見てみてください。 */ |
スラッグの部分一致で検索できるのかと思ってましたが、そういう機能ではなかったです。ちょっと残念。
部分一致をやりたい場合は以下を参考にしてみてください。
スラッグの部分一致で記事を抽出する
タイトルの完全一致で記事を抽出します。
titleの場合urlencodeは必要なく、日本語でもそのまま渡してかまいません。
1 2 3 4 5 6 7 8 9 |
$arg = array( 'title' => '記事のタイトルですー'; ); $posts = get_posts($arg); /* var_dump($posts); で見てみてください。 */ |
sパラメータは従来からあり、本文とタイトルを部分一致で検索することができます。
4.4では「-」のついた単語を除外する機能が追加されました。
単語間は半角スペースで区切って渡します。
以下は本文・タイトルに「あああ」を含むが「いいい」は含まない記事を取得する例です。
1 2 3 4 5 6 7 8 9 |
$arg = array( 's' => 'あああ -いいい'; ); $posts = get_posts($arg); /* var_dump($posts); で見てみてください。 */ |
sの場合はurlencodeは不要です。
また、順番が入れ替わっても機能します。以下の場合でも「あああ -いいい」を指定した結果と変わりません。
1 2 3 |
$arg = array( 's' => '-いいい あああ'; ); |
従来はフィルターフックでSQL文を置換して実装していたような処理も、デフォルトの機能で実現可能となりました。
覚えておいて損はない機能ですね。
ADs
コメントはまだありません。