九保すこひ@フリーランスエンジニア|累計300万PVのブログ運営中
さてさて、「プログラミング x マーケティング」で新しい価値を探るべく
研究を続けてる今日この頃です。
そして、マーケティングとして重要なSNS
、とりわけX
(Twitter)も頑張ろうということで、それに関連する話題をお届けします。
ズバリ!テーマは、
仕組み化(自動化)
です。
実はConsole dot Log
は常に記事を4、5個ストックしているのですが、
公開時にTwitter API
を使って、自動でお知らせするようになってました。
でも、ツイート内容がほぼ同じになっちゃうので「うーん、だったら手動で予約投稿しよう!」となったんですが、これだと忘れちゃいますし、なにより仕組み化ができてないですよね。
※ ちなみに、仕組み化が重要なのは「時間単価が高い人の作業に集中できる = もっと儲かる」からですね。
そこで❗
今回はWordPress
の「カスタムフィールド」に事前にツイート文章を保存しておき、公開時に自動ツイートする「仕組み化」をしてみたいと思います。
ぜひ何かの参考になりましたら嬉しいです。😊✨
※ 注意:もうめんどうなので、「Twitter」と「ツイート」で統一します(笑)
「スパイファミリーマンチョコ
買ったら、
アーニャちゃんが出ました😊」
開発環境: WordPress 6.5
目次
前提として
すでにTwitter API
にアクセスするための以下4つのキーを取得していることが前提です。
- CONSUMER KEY(API Key)
- CONSUMER SECRET (API Secret)
- ACCESS TOKEN(Access Token)
- ACCESS SECRET(Access Secret)
なお、APIの登録やキーの取得は以下のページがわかりやすいです。
では作業に移りましょう❗
カスタムフィールドとは?
実はWordPress
には、最初から「カスタムフィールド」という記事以外のデータを保存しておく機能があります。
なので、例えば「緯度・経度を保存しておけば、自動で地図が表示される」というような使い方もできたりします。
そして、今回はこの機能でツイート文章を保存しておくわけです。
※カスタムフィールドを有効にする方法は こちら
composer でパッケージをインストールする
WordPress
内部ではcomposer
を使ってないので、使えるようにしてきましょう。
※ちなみに、2024.4.23
現在、WordPress
のPHP 8
サポートは「ベータサポート」となっているため、今回はフルサポートされているPHP 7.4
で話をすすめます。
まず以下のコマンドでcomposer
の初期化をします。
composer init
すると、いくつか質問されますが、全てエンターキーで問題ありません。
そして、Twitter API
を使うためのパッケージをインストールします。
composer require abraham/twitteroauth:4.0.1
※先ほど書いたようにPHP 7.4
向けなのでバージョン4.0.1
をインストールします。もしPHP 8
以上の場合はcomposer require abraham/twitteroauth
としてください。
これでパッケージがインストールされました。
子テーマ内でツイート投稿できるようにする
続いて「子テーマ」と呼ばれるすでにあるテーマを簡単に拡張できるテクニックを使って自動ツイートできるようしていきます。
今回は、デフォルトの「twentytwentyfour」を拡張しますが、お好きなものを選んでOKです!
では、WordPress
フォルダの下にある「wp-content > themes」の中にtwentytwentyfour-child
というフォルダをつくります。
そして、その中に以下2つのファイルを用意します。
- style.css
- functions.php
中身はそれぞれ以下のとおりです。
/wp-content/themes/twentytwentyfour-child/style.css
/* Theme Name: Twenty Twenty-Four Child Theme URI: https://wordpress.org/themes/twentytwentyfour/ Author: the WordPress team Author URI: https://wordpress.org Description: Child version of the Twenty Twenty-Four theme Requires at least: 6.4 Tested up to: 6.5 Requires PHP: 7.0 Version: 1.0.0 License: GNU General Public License v2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Text Domain: twentytwentyfour-child Tags: one-column, custom-colors, custom-menu, custom-logo, editor-style, featured-images, full-site-editing, block-patterns, rtl-language-support, sticky-post, threaded-comments, translation-ready, wide-blocks, block-styles, style-variations, accessibility-ready, blog, portfolio, news Template: twentytwentyfour */
/wp-content/themes/twentytwentyfour-child/functions.php
<?php require_once ABSPATH .'vendor/autoload.php'; // composerでインストールしたライブラリを読み込む // 本来は、wp-config.php で定義すべきです define('TWITTER_CONSUMER_KEY', 'XXXXXXXXXXXXXXXXXXXXXXXXX'); define('TWITTER_CONSUMER_SECRET', 'XXXXXXXXXXXXXXXXXXXXXXXXX'); define('TWITTER_ACCESS_TOKEN', 'XXXXXXXXXXXXXXXXXXXXXXXXX'); define('TWITTER_ACCESS_SECRET', 'XXXXXXXXXXXXXXXXXXXXXXXXX'); add_action('wp_enqueue_scripts', function(){ wp_enqueue_style('parent-style', get_template_directory_uri() .'/style.css'); }); function postTweet() { $id = get_the_ID(); $post = get_post($id); if($post->post_status !== 'publish') { // 公開中じゃない時は何もしない return; } $tweeted_at = get_post_meta($id, 'tweeted_at', true); // カスタムフィールドからツイートした日時を取得 if(empty($tweeted_at)) { // まだツイートしてない場合 $tweeted_at = date('Y-m-d H:i:s'); add_post_meta($id, 'tweeted_at', $tweeted_at, true); $tweet_contents = get_post_meta($id, 'tweet_contents', true); if(! empty($tweet_contents)) { $post_title = $post->post_title; $post_link = get_permalink($id); $targets = ['{title}', '{link}']; $replacements = [$post_title, $post_link]; $tweet_contents = str_replace($targets, $replacements, $tweet_contents); // アイキャッチ画像のパスを取得 $thumbnail_id = get_post_meta($id, '_thumbnail_id', true); $attachment = wp_get_attachment_metadata($thumbnail_id); $image_path = isset($attachment['file']) ? wp_upload_dir()['basedir'] . '/' . $attachment['file'] : null; // ここでTwitter APIを使ってツイートする処理を書く $connection = new \Abraham\TwitterOAuth\TwitterOAuth( TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET, TWITTER_ACCESS_TOKEN, TWITTER_ACCESS_SECRET ); $parameters = ['text' => $tweet_contents]; if(! is_null($image_path)) { // 画像アップロードは v1.1 で行う $connection->setApiVersion(1.1); $media = $connection->upload('media/upload', ['media' => $image_path]); if(isset($media->media_id_string)) { $parameters['media'] = ['media_ids' => [$media->media_id_string]]; } } $connection->setApiVersion(2); $connection->post('tweets', $parameters, true); // 最新版は第3引数が配列になってます } } } add_filter('the_content', function($content){ if(is_single()) { postTweet($content); } return $content; });
なお、アプローチとしては以下の流れになります。
- 記事ページにアクセスがある
- post_meta に tweeted_at が保存されてるかチェック
- もし保存されていないならデータを加工して自動ツイート
- tweeted_at を保存
- それ以降は自動ツイートされることはない
また、コード中の以下部分にはそれぞれのキーをセットしてください。
// 本来は、wp-config.php で定義すべきです define('TWITTER_CONSUMER_KEY', 'XXXXXXXXXXXXXXXXXXXXXXXXX'); define('TWITTER_CONSUMER_SECRET', 'XXXXXXXXXXXXXXXXXXXXXXXXX'); define('TWITTER_ACCESS_TOKEN', 'XXXXXXXXXXXXXXXXXXXXXXXXX'); define('TWITTER_ACCESS_SECRET', 'XXXXXXXXXXXXXXXXXXXXXXXXX');
外観(テーマ)を変更する
では、実際にテーマを新しいものへ変更します。
ページ左側メニューの「外観」を選択してください。
すると、「Twenty Twenty-Four Child」というテーマが選択できるようになるので、「有効化」ボタンをクリックします。
これでテーマ設定も完了です!
カスタムフィールドを有効にする方法
まず、画面左側メニューにある「新規投稿を追加」をクリック。
新しい記事の投稿フォームが表示されるので、ページ右上にある「︙」から「設定」ボタンをクリック。
設定が表示されるので、この中にある「カスタムフィールド」をオンにし、リロードしてください。
すると、以下のようなフォームが画面下に表示されることになります。
これで作業は完了です!
お疲れ様でした。😊✨
テストしてみる
では、実際にテストしてみましょう。
新規投稿ページへ移動し、記事タイトルと本文を入力します。
そして、本題のカスタムフィールドも以下のように登録します。
- 名前: tweet_contents
- 値:
{title} という記事を公開しました! {link}ぜひ見てね!😊
- アイキャッチ画像: 適当に選択
では、これで保存してから該当ページへアクセスします。
そして、Twitter
の方へ行ってみると・・・・・・??
はい❗
うまく画像つきでツイートすることができました。
成功です😊✨
ちなみに
Twitter の文字制限に引っかからないようにするには、
以下のようなサービスを使うといいでしょう。
企業様へのご提案
今回のようなTwitter
だけに限らず、
「時間単価の高い作業」を優先して実施するための仕組み化は
IT
テクノロジー親和性が高く、お役に立てることが期待できます。
もしそういった機能をご希望でしたら、いつでもお気軽にお問い合わせからご相談ください。
お待ちしております。😊
おわりに
ということで、今回はWordPress
の記事を自動でツイートすることによって作業の自動化を行い、より時間単価が高い作業を優先する施策を実装してみました。
ホントにちょっとしたことですが、こういった回数が多いものは徐々に効果をだしていくので、ぜひ皆さんも仕組み化(自動化)できるとこはフルにやってみてくださいね。
ではでは〜❗
「次はビジネスモデル
の有料教材で勉強だあ!」