お問い合わせはコチラから

CocoonのSNSシェア数を投稿一覧に表示する

サイト運営

Cocoon v2.8.5.4にSNSシェア数に関するアクションフックが追加されました。

・SNSのシェアアカウントを保存するタイミングでアクションフックを追加(set_transient_facebook_share_count, set_transient_hatebu_share_count, set_transient_pocket_share_count)

このアクションフックを使って、投稿一覧にSNSシェア数を表示するカスタマイズになります。

// 投稿一覧のカラムを追加
function add_sns_share_columns($columns) {
    $columns['facebook_shares'] = 'Facebook';
    $columns['pocket_shares'] = 'Pocket';
    $columns['hatebu_shares'] = 'はてブ';
    return $columns;
}
add_filter('manage_posts_columns', 'add_sns_share_columns');

// 投稿一覧にシェア数を表示
function display_sns_share_columns($column, $post_id) {
	switch ($column) {
		case 'facebook_shares':
			$count = get_post_meta($post_id, 'facebook_shares_count', true);
			echo $count ? number_format($count) : '0';
			break;
		case 'pocket_shares':
			$count = get_post_meta($post_id, 'pocket_share_count', true);
			echo $count ? number_format($count) : '0';
			break;

		case 'hatebu_shares':
			$count = get_post_meta($post_id, 'hatebu_share_count', true);
			echo $count ? number_format($count) : '0';
			break;
	}
}
add_action('manage_posts_custom_column', 'display_sns_share_columns', 10, 2);

// カラムをソート可能に
function make_sns_share_columns_sortable($columns) {
	$columns['facebook_shares'] = 'facebook_shares';
	$columns['pocket_shares'] = 'pocket_shares';
	$columns['hatebu_shares'] = 'hatebu_shares';
	return $columns;
}
add_filter('manage_edit-post_sortable_columns', 'make_sns_share_columns_sortable');

function sns_share_column_orderby($query) {
    if (!is_admin() || !$query->is_main_query()) {
        return;
    }

    $orderby = $query->get('orderby');
    $meta_keys = [
        'pocket_shares' => 'pocket_share_count',
        'hatebu_shares' => 'hatebu_share_count',
        'facebook_shares' => 'facebook_shares_count'
    ];

    if (isset($meta_keys[$orderby])) {
        $query->set('meta_query', array(
            array(
                'key' => $meta_keys[$orderby],
                'compare' => 'EXISTS' // 重要!これで全投稿を対象に
            )
        ));
        $query->set('orderby', 'meta_value_num');
    }
}
add_action('pre_get_posts', 'sns_share_column_orderby');



add_action('set_transient_pocket_share_count', function($post_id, $res) {
    update_post_meta($post_id,'pocket_share_count', $res, );
}, 10, 2);

add_action('set_transient_hatebu_share_count', function($post_id, $res) {
    update_post_meta($post_id,  'hatebu_share_count', $res, );
}, 10, 2);
add_action('set_transient_facebook_share_count', function($post_id, $res) {
    update_post_meta($post_id,  'facebook_shares_count', $res, );
}, 10, 2);

transientを更新するタイミングで各投稿のシェア数をpost_metaに保存しますので、transientが更新されるまではシェア数は0になります。

数日経てば徐々に表示されるようになると思います。

この記事を書いた人
ブーン

はるばる日本よりオランダ王国へやってまいりました。
自分の経験が少しでも参考になれば嬉しいです。
お問い合わせは、『こちら』からお願い致します。

\ブーンをフォロー/
スポンサーリンク
サイト運営
\シェアお願いします!/
\ブーンをフォロー/
こんな記事も読まれています

失敗しないレンタルサーバーランキング

mixhost

不正アクセスに強くて使いやすいおススメサーバー
\本サイトで利用中/
メリット①:自動ウィルス駆除対応
メリット②:サイトの表示速度が速い!
メリット③:転送量の上限が多い!
メリット④:自由にプラン変更ができ、アクセス増にも対応できる!
メリット⑤:バックアップデータが無料で復元できる!
メリット⑥:Wordpressが簡単にインストールできる!
メリット⑦:どのプランでも初期費用が無料!
メリット⑧:10日間の無料お試し期間と30日の返金保証!

Conoha Wing

国内Wordpress最速の最強サーバー
メリット①:圧倒的な表示速度
メリット②:レンタルサーバーと独自ドメインがセットでお得◎
メリット③:プラン変更はすべてのプランで自由自在
メリット④:一か月の利用転送量の制限が緩い(9TB~)
メリット⑤:WordPresサイトの移行が簡単

エックスサーバー

国内シェアNo1の安定性と実績が魅力。ALL SSDで死角なしの万能サーバー。
メリット①:サイトの表示速度が安定して速い!
メリット②:アクセス負荷に強くて安定性が高い!
メリット③:24時間365日の充実サポートで安心!電話サポートもあり!
メリット④:転送量が多い!
メリット⑤:自動バックアップ機能付き!
メリット⑥:WordPressが簡単にインストールできる!
メリット⑦:10日の無料お試し期間がある!

タイトルとURLをコピーしました