Tweetilyをカスタム投稿に対応させる最も簡単な方法

この記事の所要時間は約 3 分 です。

a0001_016740ブログ記事のTwitterへの自動投稿に興味を覚えて、Tweetilyの導入を検討してみた。
TweetilyはWordPressからTwitterへの記事の自動投稿ができるプラグイン。

ウェブで調べてみると、どうもカスタム投稿タイプ対応ができてなさそうな記事がいくつかあったので、投稿タイプに関係がありそうな箇所を中心にコードを読んでみた。以下は、その結果のメモ。

Tweetilyのコードを読む

top-core.phpの91行目から94行目

$pt='';
if($as_post_type!='all'){
$pt = "post_type = '$as_post_type' AND";
}

ここで指定されている$as_post_typeがどこから来ているかについては、その手前の84行目に以下。
$as_post_type = get_option('as_post_type');

ここには管理画面から入力された値が入る模様。

管理画面は、top-admin.phpという中に記述されているのだけれど、
ここのコードを読む限りでは、as_post_typeには、”post”、”page”、”all”のいずれかが設定されるようだ。

top-admin.phpの641行目から645行目が以下の通り。

<select name="as_post_type">
	<option value="post">Only Posts</option>
	<option value="page">Only Pages</option>
	<option value="all">Both Posts & Pages</option>
</select> Currently sharing: '.$as_post_type.'

そこで、top-core.phpに戻ると例のas_post_typeが使用されている91行目から94行目の直後に

$sql = "SELECT ID
FROM $wpdb-$posts
WHERE $pt post_status = 'publish' ";

というコードがあり、wpdbクラスのリファレンスによると、wpdbクラスを使ってpostsテーブルからデータを抜いてくるためのもののよう。

$ptにはpost_type列への格納値を元にした絞り込み条件がセットされているわけだが、管理画面上から渡ってきた値が”all”の場合には、上記の$ptは空文字のまま(top-core.phpの92行目のif文を参照)となり、post_type列での絞り込みはされないようになっている。

なお、このpost_type列には、”post”、”page”だけではなく、”revision”や”attachment”もある模様。(wp_postsの説明を参照のこと)

投稿種別

  • 'post': 投稿
  • 'page'ページ
  • 'attachment': 添付ファイル
  • 'revision': 改訂履歴・自動保存

当然、このプラグインで”all”が指定された場合には、”revision”や”attachment”も対象となってしまうので、大丈夫なのか!?と疑問を感じるが、
どうやらpost_status = ‘publish’ の方の条件で、”revision”や”attachment”に関するものは弾かれるようで、特には問題はないようである。

カスタム投稿をTwitterにTweetさせるには?

カテゴリでのTweet対象からの除外には、元々対応しているため、管理画面からは”all”を設定するように選択し、その上で、カテゴリで制御するのがわかりやすそうではある。