GoogleのCustom Search APIをWordPressで使う方法を覚えた
WordPressにショートコードを使ってPHPを埋め込む方法 - Qiita
を覚えたので
WordPressでGoogleのCustom Search APIを使ってみる - ponsuke_tarou’s blog
をやってみたところで思た
ORとAND検索したい
いくつもの検索ワードを検索したいけどAPIでは100検索/日という制限があるので何回も何回も検索したくない
Custom Search JSON API provides 100 search queries per day for free. If you need more, you may sign up for billing in the API Console.
Custom Search JSON API | Google Developers
そこで、普通のGoogle検索でも使える「OR」「AND」をAPIでやってみた。
【組み合わせ(優先)検索】(A AND B) OR C
「()」を使うと、「()」内が優先された結果を表示します。
上記検索(AND OR NOT)を、組み合わせて使うときに優先順位を付けられます。
ex.) (google AND yahoo) OR MSN
Google検索を使いこなすためのテクニックまとめ | SONICMOOV LAB
Custom Search APIでORとAND検索する方法
- 環境
- Windows 10 Pro 64bit バージョン1909
- Local by Flywheel 5.6.1
- PHP 7.4.1 / MySQL 8.0.16 / Apach / WordPress 5.4.2
- テーマ : Lightning
配列に検索ワードを入れてそれを繋げるだけ。
検索結果は、引用符をつけて表示してみた。
<?php
// 検索ワード群1
$word_group1 = array('ponsuke','tarou','0531','ぽんすけ','たろう');
// 検索ワード群2
$word_group2 = array('Qiita','hatena');
// 検索ワード群1~2はOR条件で検索したい
$word_or1 = implode(' OR ', $word_group1); // >>> 'ponsuke OR tarou OR 0531 OR ぽんすけ OR たろう'
$word_or2 = implode(' OR ', $word_group2); // >>> 'Qiita OR hatena'
// 検索ワード群1と2のどちらの検索文言も含んで検索したい : (検索ワード群1) AND (検索ワード群2)
$search_words = '(' . $word_or1 . ') AND (' . $word_or2 . ')'; // >>> '(ponsuke OR tarou OR 0531 OR ぽんすけ OR たろう) AND (Qiita OR hatena)'
$param_ary = array(
// 検索ワード
'q' => $search_words,
'key' => {APIキー},
'cx' => {検索エンジンID},
// JSON形式で取得する
'alt' => 'json',
// 取得開始順位(検索結果1~10位を取得するを取得する)
'start' => 1
);
$param = http_build_query($param_ary);
$reqest_url = 'https://www.googleapis.com/customsearch/v1?' . $param;
$result_json = file_get_contents($reqest_url, true);
$result = json_decode($result_json, true);
$items = $result['items'];
?>
<h1>今日のぽんすけ検索</h1>
<?php if (count($items) === 0) : ?>
<p>ぽんすけ情報はありません。</p>
<?php else : ?>
<?php foreach ($items as $key => $item) : ?>
<blockquote class="wp-block-quote">
<a href="<?php echo $item['link']; ?>"><?php echo $item['title']; ?></a>
<p><?php echo $item['snippet']; ?></p>
</blockquote>
<br>
<?php endforeach; ?>
<?php endif; ?>
<?php
// ...省略...
function google_search() {
// 出力バッファリングを有効化する
ob_start();
// 外部ファイルを読み込む
get_template_part('google-search');
// 出力バッファを削除する
return ob_get_clean();
}
add_shortcode('google-search', 'google_search');