JetPackパブリサイズでのSNS連携時に本文項目を制御
JetPackのパブリサイズで外部のSNS(Twitter、Facebook等)を連携するときに、本文を一部分だけ出す必要があったが、管理画面側では詳細に設定できない。
本当にできないのかと思いJetPackのpablicize.phpを読んで確認したが、管理画面側のデータからSNSへ出力するデータを制御しているような気配は全く無し。
ただ、カスタムフィールドを参照している項目が330行目付近(2015年12月1日時点最新版)にあった。管理画面を確認してみると、公開パネルにカスタムフィールドがあることに気づいた。(手順が逆なのは気にしない)
どうやらこいつの値があれば、SNSにそのデータを出力するようだ。
じゃあ管理画面で本文に書いた内容の一部をカスタムフィールドにコピペしよう!
・・・なーんて、そんなのは中々めんどい。
要はパブリサイズの持つカスタムフィールド書き換えが起きたあとに、記事を公開するタイミングで書き換えてあげれば良い訳だろう。
function publicize_message_rewrite($post_id){ if(class_exists('Publicize') && class_exists('Publicize_Base')){ $str = strip_tags($_POST['content']); $str = preg_replace('/( | | )/', '', preg_replace('/\r\n|\r|\n/', '', $str)); $str = (mb_strlen($str) > 64) ? mb_substr($str, 0, 62, get_bloginfo('charset')).'[...]' : $str; update_post_meta($post_id, '_wpas_mess', $str); } } add_action('save_post', 'publicize_message_rewrite', 999, 1);
今回は完全に本文の一部分だけに書き換えてあげるようにだけしている。 $strの参照値を変更すれば他のデータにも書き換え可能。