Jetpack for WordPressのパブリサイズ共有をでFacebookの全文表示を回避する

Jetpackは便利だしパブリサイズ共有もつかっているのだけど、長年懸案だったことを修正したのでメモしておく。

Facebookに自動投稿するとリード文が

/** パブリサイズ共有の文言を変更 */
function change_publicize_save_meta( $submit_post, $post_id, $service_name, $connection ){
 /*カテゴリの配列を取得*/
 $categories = get_the_category($post_id);
 /*先頭のカテゴリの名前を取得*/
 $category = $categories[0]->cat_name;
 /*タグの配列を取得*/
 $tags = get_the_tags($tag->name);
 /*記事タイトルを取得*/
 $title = get_the_title($post_id);
 /*パブリサイズ共有が有効な場合*/ 
 if ( !$publicize_custom_message ) {
 /*カスタムメッセージを編集*/
 $publicize_custom_message = sprintf( "記事【%s】を投稿しました。nよかったら見に来てください!n #%s",$title ,$category ,$tags);
 /*カスタムメッセージを適用*/
 update_post_meta( $post_id, '_wpas_mess', $publicize_custom_message );
 }
}
add_action( 'publicize_save_meta', 'change_publicize_save_meta', 10, 4 );

カテゴリを取得して表示する方法はあったのだけど、カテゴリなんてタグ化しても個別化しないからカテゴリとタグ両方を入れるようにしたい。

この投稿はその検証用。

うまく動いてくれるといいな。動かなかった。

コード修正して出来る方法探さないと。

$tags = get_the_tags($tag->name);

ではあかんのか。。。わかる人に教えてもらいたい。。。

他にカスタム投稿タイプでも適用させる

単純にインストール→有効化しただけでは、通常の「投稿」だけしかパブリサイズ共有は行えません。

管理画面上でも追加する欄はありませんので、functions.phpに追記する必要があります。

/** カスタム投稿タイプにもパブリサイズ共有を対応 */
function add_jetpack_custom_post_publicize()
{
    add_post_type_support( 'report', 'publicize' );
    add_post_type_support( 'topics', 'publicize' );
}
add_action( 'init', 'add_jetpack_custom_post_publicize' );

参考

【Jetpack】カスタム投稿タイプにもパブリサイズ共有を適応させる方法

共有するURLを変更する

あまり需要は無いと思いますが、共有するURLを変更すること出来なくはありません。
例えば邪道な方法ですが、WordPressを管理画面としてだけ利用し、詳細ページはWPの外から投稿内容だけ読み取っている、といった場合はパーマリンクのURLとは別のアドレスになると思います。

というよりも、結論から申すとパーマリンクの向き先を該当のURLに切り替える事で共有するURLも切り替わります。

まずはパーマリンクのURLを変更する場合は、post_type_linkにフィルタリングします。

function change_post_type_link( $link, $post )
{
    // 投稿だけ変更
    if ( 'post' === $post->post_type ) {
    	/* $linkを変更する処理 */
    }
    return esc_url( $link );
}
add_filter( 'post_type_link', array( $this, 'change_post_type_link' ), 1, 2 );

また、投稿内容に利用されるURLはショートリンク(http://example.net/?p=***)なので、そちらも変更します。

function change_short_link( $dummy, $post_id, $context )
{
    if ( 'post' == $context ) {
        $post = get_post( $post_id );
        // 投稿だけ変更
        if( $post->post_type === 'post' ) {
            /* $urlを変更する処理 */
            return esc_url( $url );
        }
    }
    return FALSE;
}
add_filter( 'pre_get_shortlink', 'change_short_link', 10, 3 );

参考:https://blog.sus-happy.net/jetpack-publicize-custom/

このページSSL化されていないのにSSLなんで警告が出て見るときに危ないサイトと出るから、このページ主は直した方がいいと思う。。(2017/10/02現在)

まあ、JetPackは他にも細かいカスタマイズして使わない機能とかをオミットした方がいい。

OGPの自動タグとかSEOプラグインに任せた方がいいしテーマにも付いている場合があるので、そのあたりのカスタマイズで重複を防ぐのは必要。

カスタマイズは基本、functionsかそこに外部化してカスタム機能をカスタムする場所毎にオブジェクト化しておく方がいい。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です