H2-1 第7回で行うこと
第6回では、固定ページ上でNEWS候補を確認し、その場でNEWS表示文、表示先NEWS、表示フラグ、承認ステータス、X投稿ステータス、メモを更新できる管理画面を作成しました。
これにより、WordPressのダッシュボードを深く操作しなくても、担当者が固定ページ管理画面からNEWS候補をメンテナンスできるようになりました。
第7回では、次の段階として、新しく公開された通常投稿をNEWS候補へ自動登録するバッチ処理を作ります。
これまでの状態では、NEWS候補を用意するには、管理者が手作業でNEWS候補を追加する必要がありました。
しかし、TECNでは今後も継続的に記事を公開していきます。
そのたびに、手作業でNEWS候補を作成していると、運用負荷が高くなります。
そこで第7回では、直近に公開された通常投稿を確認し、まだNEWS候補に登録されていない記事だけを自動でNEWS候補に登録する仕組みを作ります。
H2-2 第7回で作るバッチ処理の役割
第7回で作るバッチ処理の役割は、新しい記事を見つけてNEWS候補に登録することです。
対象は、WordPressの通常投稿です。
つまり、普段の記事作成で公開された投稿を確認し、その投稿がまだNEWS候補に登録されていなければ、NEWS候補として自動登録します。
このとき、NEWS候補は自動的に読者向けに表示されるわけではありません。
初期状態では、担当者確認前の候補として登録します。
具体的には、次の状態で登録します。
表示先NEWSは「TECN NEWS」とします。
承認ステータスは「未確認」とします。
表示フラグは「OFF」とします。
X投稿ステータスは「未投稿」とします。
これにより、バッチ処理が新しい記事を見つけても、担当者が確認するまでは読者向けに表示されません。
H2-3 なぜ自動公開しないのか
第7回で重要なのは、バッチ処理はあくまで「候補登録」までにとどめることです。
新しい記事が公開されたからといって、すべての記事を自動的にTECN NEWSとして表示するわけではありません。
TECN NEWSは、読者に対して「今読んでほしい記事」「最近公開された有用な記事」への導線を提供するための枠です。
そのため、最終的に表示するかどうかは担当者が判断する必要があります。
自動登録されたNEWS候補を、固定ページ管理画面で確認します。
そのうえで、読者に案内したいものだけを「承認済み」「表示ON」にします。
この流れにすることで、記事作成とNEWS表示の判断を分けることができます。
H2-4 対象期間は直近14日
第7回の初版では、直近14日以内に公開された通常投稿を対象にします。
30日分を対象にすることもできますが、TECNの運用では、毎回大量の記事を確認するよりも、直近2週間程度の候補を見ながらメンテナンスする方が扱いやすいと考えました。
対象期間はコード内で変更できるようにします。
初期値は14日です。
必要に応じて、30日に変更することもできます。
このようにしておくことで、運用状況に応じて、管理画面に出てくるNEWS候補の量を調整できます。
H2-5 重複登録を防ぐ
バッチ処理で必ず必要になるのが、重複登録の防止です。
同じ記事が何度もNEWS候補に登録されると、管理画面が分かりにくくなります。
そこで、第7回のバッチ処理では、通常投稿の投稿IDを source_post_id としてNEWS候補側に保存します。
次回以降のバッチ実行時には、この source_post_id を確認します。
すでに同じ source_post_id を持つNEWS候補が存在する場合、その記事は登録済みと判断し、新しく登録しません。
これにより、手動実行しても、WP-Cronで自動実行しても、同じ記事が重複して登録されることを防げます。
H2-6 固定ページ管理画面に手動取込ボタンを置く
第7回では、バッチ処理を手動で実行できるようにするため、固定ページ管理画面に手動取込ボタンを設置します。
固定ページには、次のショートコードを貼ります。
[apice_news_import_button]
このショートコードを貼ると、固定ページ管理画面に「新規投稿をNEWS候補に取り込む」ボタンが表示されます。
担当者や管理者は、このボタンを押すことで、直近14日以内に公開された通常投稿を確認し、未登録の記事だけをNEWS候補に取り込むことができます。
取り込み結果として、確認記事数、新規登録件数、重複スキップ件数、エラー件数を表示します。
これにより、バッチ処理がどのように動いたかを画面上で確認できます。
H2-7 WP-Cronで1日1回自動実行する
手動取込ボタンだけでも運用はできますが、毎回人がボタンを押す必要があると、取り込み忘れが発生する可能性があります。
そこで、第7回ではWP-Cronも使います。
WP-Cronは、WordPressに用意されている簡易的な予約実行の仕組みです。
通常のサーバーcronとは異なり、サイトへのアクセスをきっかけに、予定時刻を過ぎた処理が実行されます。
TECNのように一定のアクセスがあるサイトであれば、1日1回程度のバッチ処理には十分使えます。
第7回では、1日1回、新規投稿取込バッチが実行されるように設定します。
正確な時刻に動く必要はありません。
重要なのは、日々の運用の中で、新しく公開された記事が自動的にNEWS候補へ取り込まれることです。
H2-8 固定ページ本文の構成
第7回以降、固定ページ管理画面の本文は、次のようにします。
[apice_news_import_button]
上に手動取込ボタンを置きます。
下にNEWS候補の管理画面を表示します。
この構成にすることで、担当者はまず新規投稿をNEWS候補へ取り込み、その下で取り込まれた候補を確認・編集・承認できます。
つまり、固定ページ管理画面だけで、日常的なNEWS候補メンテナンスができるようになります。
H2-9 第7回時点の運用フロー
第7回時点の運用フローは、次の通りです。
まず、記事作成者が通常投稿として記事を作成し、公開します。
次に、新規投稿取込バッチが、直近14日以内に公開された記事を確認します。
まだNEWS候補に登録されていない記事があれば、NEWS候補として自動登録します。
登録されたNEWS候補は、初期状態では「未確認」「表示OFF」です。
担当者は固定ページ管理画面でNEWS候補を確認します。
読者に案内したい記事であれば、NEWS表示文を整え、承認ステータスを「承認済み」にし、表示フラグをONにします。
この時点では、まだ読者向けページへの表示処理は完成していません。
第7回では、まず新規投稿をNEWS候補として自動登録するところまでを完成させます。
H2-10 第7回のまとめ
第7回では、新しく公開された通常投稿をNEWS候補へ自動登録するバッチ処理を作成しました。
この仕組みにより、管理者が毎回手作業でNEWS候補を作る必要がなくなります。
また、初期状態を「未確認」「表示OFF」にしているため、バッチ処理で登録された記事が勝手に読者向けに表示されることはありません。
担当者が固定ページ管理画面で内容を確認し、読者に案内したい記事だけを承認して表示対象にします。
さらに、手動取込ボタンとWP-Cronの両方を用意することで、日常運用と自動化のバランスを取ることができます。
次回の第8回では、このバッチ処理をさらに拡張し、NEWS候補登録と同時に、元記事本文へTECN NEWS自動表示枠を挿入する仕組みを作ります。





コメント