WordPress Jetpackのパブリサイズ共有のメッセージを自動設定

WordPress.comの機能を個人でインストールしたWordPressでも使うことができるJetpackプラグインが強力すぎる。その中でパブリサイズ共有機能が便利。

これは予めアカウントを設定しておくことでTwitter,Facebook,LinkedIn,Tumblrといったサービスに投稿を公開したときに自動的に共有する機能。

これでTwitterにブログの投稿を共有していたのだけど1つ不満なことがあってそれはデフォルトのメッセージが「%title% %shortlink%」であること。

このメッセージだと自分の書いたリンクを共有しているのか、他の人のページを共有しているのかとてもわかりにくい、またブログのタイトルによってはつぶやきの内容なのかURLのタイトルなのかもわかりづらく不親切である。で「ブログ書いた: %title% %shortlink%」のように変更したい。このメッセージは投稿の編集画面から手動で変更できるのだけど毎回それを設定するのは面倒でやっていなかった。

コードを読んでみると_wpas_messというメタデータに保存しているようなのでactionをフックして書き換えるようにしてみた。

function makotokw_publicize_save_meta($submit_post, $post_id, $service_name, $connection)
{
    if ($service_name != 'twitter') {
        return;
    }
    $prefix = 'ブログ書いた:';
    $title = get_the_title($post_id);
    $publicize_custom_message = get_post_meta($post_id, '_wpas_mess', true);
    if (empty($publicize_custom_message)
        || ($publicize_custom_message &&
            ((strpos($publicize_custom_message, $prefix) === 0 && strpos($publicize_custom_message, $prefix . ' ' . $title) !== 0 )
                || strpos($publicize_custom_message, $title) === 0))) {
        $publicize_custom_message = sprintf(
            "%s %s %s",
            $prefix,
            $title,
            wp_get_shortlink($post_id, 'post')
        );
        update_post_meta($post_id, '_wpas_mess', $publicize_custom_message);
    }
}
add_action('publicize_save_meta', 'makotokw_publicize_save_meta', 10, 4);

publicize_save_metaは共有しているサービスxアカウントの数だけ呼ばれるので若干無駄な気もしたけどTwitterしか共有していないのでこれで良しとした。

プラグインにするほどでも無いので上記のコードはテーマに入れています。