1. TOP
  2. 技術メモ
  3. ワードプレスの本文から単語を抽出し、Amazonのアフィリエイトリンクを自動生成する方法

ワードプレスの本文から単語を抽出し、Amazonのアフィリエイトリンクを自動生成する方法

ワードプレスの本文から単語を抽出し、Amazonのアフィリエイトリンクを自動生成する方法

ワードプレスの投稿記事(本文)から、単語を抽出してAmazonへのリンクを生成するコードになります。

アフェリエイトタグは、ご自身のタグに書き換えてください。下記コードはsingle.phpなどに貼り付けてください。

 

<?php
// 本文からキーワードを抽出する関数
function extract_keywords($content, $num_keywords = 3) {
    $content = strip_tags($content);

    // 文章を単語ごとに分割(日本語対応)
    preg_match_all('/\p{Han}{2,}|\p{Hiragana}{2,}|\p{Katakana}{2,}|[a-zA-Z0-9]{2,}/u', $content, $words);
    $words = array_filter($words[0], function($word) {
        return mb_strlen($word, 'UTF-8') > 1; // 2文字以上の単語を抽出
    });

    // フィルタリングする一般的な助詞や接続詞のリスト
    $stopwords = ['こと', 'の', 'が', 'に', 'を', 'は', 'と', 'で', 'へ', 'や', 'も', 'な', 'だ', 'です', 'ます', 'する', 'いる', 'ある', 'てる', 'た', 'です', 'いい', 'ない'];

    // フィルタリング
    $filtered_words = array_filter($words, function($word) use ($stopwords) {
        return !in_array($word, $stopwords);
    });

    // 頻出する一般名詞のみを抽出
    $noun_stopwords = ['の', 'が', 'を', 'に', 'は', 'と', 'で', 'や', 'も'];
    $filtered_words = array_filter($filtered_words, function($word) use ($noun_stopwords) {
        return !in_array($word, $noun_stopwords);
    });

    $word_count = array_count_values($filtered_words);
    arsort($word_count);

    return array_slice(array_keys($word_count), 0, $num_keywords);
}

// キーワードを使ってAmazon検索リンクを生成する関数
function create_amazon_link($keyword, $affiliate_tag) {
    $base_url = "https://www.amazon.co.jp/s?k=";
    $query = urlencode($keyword);
    return $base_url . $query . "&tag=" . $affiliate_tag;
}

// ワードプレスの本文
$post_content = get_the_content();
$keywords = extract_keywords($post_content, 3); // 抽出するキーワードの数を3に設定
$affiliate_tag = "あなたのアフィリエイトタグ"; // あなたのアフィリエイトタグに置き換えてください

// 各キーワードに対してAmazonリンク付きのボタンを生成
foreach ($keywords as $keyword) {
    $amazon_link = create_amazon_link($keyword, $affiliate_tag);
    echo '<a href="' . $amazon_link . '">' . htmlspecialchars($keyword, ENT_QUOTES, 'UTF-8') . '</a>';
}
?>

 

上記のコードでは、一般的な助詞や接続詞を除外した上で、より自然な単語を抽出しています。さらに、2文字以上の単語のみを抽出することで、より適切なキーワードを得ることができます。これで日本語のキーワードがより自然に抽出されるはずですが、まだ日本語として不自然な抽出もされてしまいます。

 

自然な単語抽出を実現するために、日本語形態素解析ライブラリ「MeCab」を使用してキーワードを抽出する方法もあります。

<?php
// MeCabを使用してキーワードを抽出する関数
function extract_keywords($content, $num_keywords = 3) {
    $content = strip_tags($content);
    
    // MeCabを初期化
    $mecab = new MeCab_Tagger();
    $nodes = $mecab->parseToNode($content);

    $words = [];
    foreach ($nodes as $node) {
        $features = explode(',', $node->getFeature());
        if (count($features) > 0 && ($features[0] == '名詞')) {
            $words[] = $node->getSurface();
        }
    }

    // フィルタリングする一般的な助詞や接続詞のリスト
    $stopwords = ['こと', 'の', 'が', 'に', 'を', 'は', 'と', 'で', 'へ', 'や', 'も', 'な', 'だ', 'です', 'ます', 'する', 'いる', 'ある', 'なる'];

    // フィルタリング
    $filtered_words = array_filter($words, function($word) use ($stopwords) {
        return !in_array($word, $stopwords) && mb_strlen($word, 'UTF-8') > 1; // 2文字以上の単語を抽出
    });

    $word_count = array_count_values($filtered_words);
    arsort($word_count);

    return array_slice(array_keys($word_count), 0, $num_keywords);
}

// キーワードを使ってAmazon検索リンクを生成する関数
function create_amazon_link($keyword, $affiliate_tag) {
    $base_url = "https://www.amazon.co.jp/s?k=";
    $query = urlencode($keyword);
    return $base_url . $query . "&tag=" . $affiliate_tag;
}

// ワードプレスの本文
$post_content = get_the_content();
$keywords = extract_keywords($post_content, 3); // 抽出するキーワードの数を3に設定
$affiliate_tag = "あなたのアフィリエイトタグ"; // あなたのアフィリエイトタグに置き換えてください

// 各キーワードに対してAmazonリンク付きのボタンを生成
foreach ($keywords as $keyword) {
    $amazon_link = create_amazon_link($keyword, $affiliate_tag);
    echo '<a href="' . $amazon_link . '">' . htmlspecialchars($keyword, ENT_QUOTES, 'UTF-8') . '</a>';
}
?>

サーバーにMeCabがインストールされている場合、このコードを使用できます。

MeCub公式サイト

 

MeCubがサーバーにインストールされていない場合は、Yahoo Japanの日本語形態素解析APIなどを利用する方法もあります。

こちらの場合は利用制限があるので、MeCubをインストール可能であればそちらを利用ください。

 

Yahoo JapanのAPIを使用して形態素解析を行いたコード

<?php
// Yahoo Japan APIのアプリケーションID
$app_id = 'YOUR_APP_ID'; // あなたのアプリケーションIDに置き換えてください

// 日本語形態素解析APIを使用してキーワードを抽出する関数
function extract_keywords($content, $num_keywords = 3, $app_id) {
    $content = strip_tags($content);
    $url = 'https://jlp.yahooapis.jp/KeyphraseService/V1/extract';
    
    $params = [
        'appid' => $app_id,
        'sentence' => $content,
        'output' => 'json'
    ];

    $query = http_build_query($params);
    $response = file_get_contents("{$url}?{$query}");
    $result = json_decode($response, true);

    if (!$result) {
        return [];
    }

    // キーワードをスコアでソート
    arsort($result);
    $keywords = array_slice(array_keys($result), 0, $num_keywords);

    return $keywords;
}

// キーワードを使ってAmazon検索リンクを生成する関数
function create_amazon_link($keyword, $affiliate_tag) {
    $base_url = "https://www.amazon.co.jp/s?k=";
    $query = urlencode($keyword);
    return $base_url . $query . "&tag=" . $affiliate_tag;
}

// ワードプレスの本文
$post_content = get_the_content();
$keywords = extract_keywords($post_content, 3, $app_id); // 抽出するキーワードの数を3に設定
$affiliate_tag = "あなたのアフィリエイトタグ"; // あなたのアフィリエイトタグに置き換えてください

// 各キーワードに対してAmazonリンク付きのボタンを生成
foreach ($keywords as $keyword) {
    $amazon_link = create_amazon_link($keyword, $affiliate_tag);
    echo '<a href="' . $amazon_link . '">' . htmlspecialchars($keyword, ENT_QUOTES, 'UTF-8') . '</a>';
}
?>

 

利用前にバックアップ等をしてくださいね。

 

PR

ニッチなテーマのイラスト素材を投稿中!ぜひご利用ください。

ナマケモノなど可愛いイラストをイラストACで無料配布中!

オリジナル絵本をKindleで出版!

ナマケモノのふにゃまるちゃんを読む

困ったときは格安で依頼!RU DESIGNも出品中

格安レンタルサーバーでサイト運営を始めよう

ドメイン取得は一括管理が便利!

応援・支援よろしくお願いします!サイト運営に活用させていただきます。

Braveクリエイターサポート
ホームページ制作ならRU DESIGN

関連記事

【WordPress初心者さん必見!】「これ、どうすればいいの?」検索しても意外と見つからない疑問を解決!
2025/04/19
WordPressでのサイト運営、始めてみましたか?✨ 最初は設定や記事の書き方など、覚えることがたくさんで大変ですよね!基本的な操作は色々なサイトで解説されて...
WordPressで「Missing a temporary folder」エラーを解決!ファイルがアップロードできない時の簡単な対処法
2025/04/19
WordPressで画像やプラグインをアップロードしようとしたら、「Missing a temporary folder」というエラーが出て、うまくアップロード...
WPFormsで「JavaScriptの問題を検出しました」メッセージが表示された時の原因と対処法
2025/04/19
WordPressサイトで人気の高いお問い合わせフォームプラグインの一つであるWPFormsを利用していると、サイトの管理画面や、実際にフォームが表示されている...
WordPressサイトの処理が止まる?「Maximum execution time exceeded」エラーの原因と対策
2025/04/18
WordPressサイトを運営していると、時々「Fatal error: Maximum execution time of XX seconds exceed...
WordPressで遭遇しやすい「原因が分かりにくい」エラーと解決策
2025/04/18
WordPressでウェブサイトを運用していると、予期しないエラーメッセージに遭遇することがあります。有名なエラー(例えば、白い画面だけが表示される「真っ白画面...