WordPress: Dupilicate Postで記事を複製したときにJetpackのTwitter共有ができない問題を解決する方法

WordPress: Dupilicate Postで記事を複製したときにJetpackのTwitter共有ができない問題を解決する方法

Duplicate PostsはWordPressの記事を複製することができる便利なプラグインです。

Duplicate Posts

記事タイトル、本文、カテゴリ、タグ、アイキャッチ画像などを複製して記事を作成することができます。シリーズ物など同じようなフォーマットで記事を作成するときに役に立ちます。

余談ですが、同じようなプラグインにWordPress記事のテンプレートを作成することができるTinyMCE Templatesというプラグインもあります。こちらは記事のテンプレートを作成できるので、記事のパターンが決まっているときや、毎回同じような内容のパーツを挿入したいときに役に立ちます。

TinyMCE Templates

さて、Duplicate Postで記事を複製すると、プラグインJetpackのパブリサイズ共有機能を使った記事投稿時のTwitterへの自動投稿が上手く動作しません。

Jetpack

↓Twitterにチェックが入っているのに、記事を公開しても自動投稿されません!

パブリサイズ共有

この問題は、Jetpackのパブリサイズ共有で記事を共有した際に、データベースにその記事が「共有済み」であることを示すフラグが作成され、Duplicate Postで記事を複製する際に「共有済み」のフラグも複製してしまうために発生します。このフラグはwpx_postmetaのテーブルに格納されています。

Duplicate Postには、wpx_postmetaテーブルの情報のうち、複製したくない情報を指定できる機能があります。

Dupilicate Post 複製しないカスタムフィールド

Duplicate Postの管理画面から「複製しないカスタムフィールド」に、以下の情報を記入して設定を保存します。

_wpas_done_all,_wpas_mess

これで、記事を複製しても、パブリサイズ共有が可能になります。

通常はこれで解決しますが、この設定を行っても共有が上手くいかないことがあります。

この現象は、元となる記事でTwitter共有のチェックが外れている場合に発生します。

元となる記事のTwitter共有のチェックが外れていると、上記の設定を行ってもTwitterへの自動投稿がうまくいかないのです。

これは、元となる記事でTwitter共有のチェックが外れていると、「この記事のTwitter共有はスキップする」という情報がデータベースに保存され、その情報も複製してしまうためです。

これも、Duplicate Postの管理画面から「複製しないカスタムフィールド」に「この記事のTwitter共有はスキップする」のフラグを指定すれば、記事を複製した際にTwitter共有ができるようになります。

しかし、この値はサイトごと(JetpackでTwitterへの共有認証を行う度)に変わります。通常のサイトは1つの値だけですが、Twitterへの認証共有を何度かやり直した場合は、複数の値を持っています。

データベースを見ることができる人はデータベースで値を調べればいいのですが、難しい場合は、新規でTwitter共有のチェックを入れた記事を公開して、その記事を複製していく方が無難です。

データベースには、wpx_postmetaテーブルのmeta_keyカラムに_wpas_skip_12345678のような名前で保存されています。_12345678の部分が、JetpackでTwitterへの共有認証を行った際に生成されるIDです。

SQLで重複値を除いて表示するには次のコードを実行します。

SELECT DISTINCT meta_key FROM `wpx_postmeta` WHERE meta_key REGEXP '(_wpas_skip_.*)';

meta_keyの検索

表示された値を、Duplicate Postの管理画面から「複製しないカスタムフィールド」にカンマ区切りで追加します。