WordPressでプラグインを使用せずにSimpleTagsの自動タグ機能だけを使いたいんですけど、どうしましょう?

WordPressには「SimpleTags」という投稿タグに関する機能を拡張する人気のプラグインがあります。とても使いやすいのですが、私には高機能すぎるのと、いつも使うのは自動タグの機能だけなので専用の簡易的な関数を作りました。
コンテンツまたはタイトルに指定したキーワードがあれば自動で投稿タグが追加されます。

過去の投稿全部に指定投稿タグを一括登録する方法

サイト読み込み時に毎回投稿タグの追加が実行されます。
実行タイミングを変更したい場合はアクションフックのアクション名をお好みで変更してください。

投稿記事数が多いと時間がかかります。
表示の時間も遅くなるので、いいタイミングでadd_action(‘init’, ‘all_posts_auto_tagging’);をコメントアウトして停止してください。

1
function all_posts_auto_tagging()
2
{
3
    $tags = "ここに,キーワード,を,入力"; // カンマで区切る
4
    $tags = explode(',', $tags);
5

6
    if (null !== ($_posts = get_posts(array('posts_per_page' => -1)))) {
7
        foreach ($_posts as $post): setup_postdata($post);
8
            foreach ((array) $tags as $tag):
9
                if (strpos($post->post_content, $tag) !== false) {
10
                    wp_set_post_tags($post->ID, $tag, true);
11
                }
12
                if (strpos($post->post_title, $tag) !== false) {
13
                    wp_set_post_tags($post->ID, $tag, true);
14
                }
15
            endforeach;
16
        endforeach;
17
        wp_reset_postdata();
18
    }
19
}
20
add_action('init', 'all_posts_auto_tagging');

新規投稿のみに指定タグを登録する方法

新規記事追加時、または編集時に投稿保存をきっかけに自動で投稿タグが追加されます。

1
function post_auto_tagging($post_id, $post)
2
{
3
    $tags = "ここに,キーワード,を,入力"; // カンマで区切る
4
    $tags = explode(',', $tags);
5

6
    foreach ((array) $tags as $tag):
7
        if (strpos($post->post_content, $tag) !== false) {
8
            wp_set_post_tags($post_id, $tag, true);
9
        }
10
        if (strpos($post->post_title, $tag) !== false) {
11
            wp_set_post_tags($post_id, $tag, true);
12
        }
13
    endforeach;
14
}
15
add_action('save_post', 'post_auto_tagging', 10, 2);