Help us understand the problem. What is going on with this article?

GoogleのCustom Search APIでORとAND検索する方法

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

配列に検索ワードを入れてそれを繋げるだけ。
検索結果は、引用符をつけて表示してみた。

google-search.php
<?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; ?>
functions.php
<?php
// ...省略...
function google_search() {
    // 出力バッファリングを有効化する
    ob_start();
    // 外部ファイルを読み込む
    get_template_part('google-search');
    // 出力バッファを削除する
    return ob_get_clean();
}
add_shortcode('google-search', 'google_search');

image.png

ponsuke0531
びっくりするほど物覚えが悪いが、エンジニアを目指しています。
http://ponsuke-tarou.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした