【Cocoon】SNSシェアボタンをショートコードで呼び出す

やりたいこと

投稿ページや固定ページ内で自由な箇所に「SNSシェア」ボタンを表示したい。
サービスごとの表示非表示は「Cocoon設定」>「SNSシェア」の設定を反映させたい。

検証済みテーマ

CocoonLuxeritasその他テーマ
OK未検証未検証

「Cocoon」独自実装の機能を使用しているので「Cocoon」以外では十中八九使えません。

やりかた

テーマの「functions.php」にコードを記載する方法で実装します。

以下の場所から編集できます。
「Wordpress管理画面」>「外観」>「テーマファイルエディター」右側から編集するファイルを選択します。

functions.phpへ記載するコード

//SNSシェアボタンのショートコード化
add_shortcode( 'custom_sns_share', 'custom_sns_share' );
if ( ! function_exists( 'custom_sns_share' ) ):
function sns_filter($res, $option){
	return true;
};
function custom_sns_share($atts = array()) {
	add_filter('is_sns_share_buttons_visible', 'sns_filter', 10, 2);
	if(!isset($atts['view'])){
		$option = SS_MOBILE;
	}else{
		switch($atts['view']){
			case 'top':
				$option = SS_TOP;
				break;
			case 'bottom':
				$option = SS_BOTTOM;
				break;
			default:
				$option = null;
		}
	}
	if(!$option){
		return '[custom_sns_share]に未対応のオプションが設定されています。view=\'top or bottom\'で指定してください。';
	}
	ob_start();
	get_template_part_with_option('tmp/sns-share-buttons', $option);
	$content = ob_get_clean();
	return $content;
	remove_filter('is_sns_share_buttons_visible', 'sns_filter', 10);
}
endif;

ショートコードの使い方

「SNSシェア」ボタンを呼び出すには以下のコードを記載してください。

[custom_sns_share]

ショートコードには以下のパラメーターを付与して、各サービスの表示非表示を設定できます。

パラメーターデフォルト値
viewtop
bottom
パラメータなし

値ごとの各サービスの表示非表示は以下のようになっています。

表示非表示
topトップシェアボタン設定に従います
bottomボトムシェアボタン設定に従います
パラメータなしすべてのサービスを表示します

完成

上から順に全表示、トップシェアボタン設定に従って表示、ボトムシェアボタン設定に従って表示となります。

「Wordpress管理画面」>「Cocoon設定」>「SNSシェア」は以下のようにして検証しました。
おおもとの表示設定を無視して表示させるコードになっています。

参考