SNSシェアボタンショートコードを追加する方法

Cocoonカスタマイズ集
この記事は約3分で読めます。
記事内に広告が含まれています。

はじめに

以下の記事では、「SNSシェアボタン」をショートコード化する方法を紹介しています。

しかし、この記事で紹介されている方法では、テンプレートの読み込み処理やパラメータの設定が最適ではありません。

そこで今回は、これらの処理を適切に修正し、ショートコードを改善します。

この記事では、この方法について説明します。

問題点

/** CocoonのSNSシェアボタンを表示するショートコード 2024-02-18 */
add_shortcode('sns_share_buttons', 'wrap_get_template_sns_share');
if (!function_exists('sns_share_buttons')):
function wrap_get_template_sns_share($atts) {
  set_query_var('option', SS_BOTTOM);
  ob_start();
  get_template_part('tmp/sns-share-buttons');
  $content = ob_get_clean();

  if (has_filter("cocoon_part_before__{$slug}")) {
    do_action("cocoon_part_before__{$slug}");
  }

  // 書き換え
  if (has_filter("cocoon_part__{$slug}")) {
    $content = apply_filters("cocoon_part__{$slug}" ,$content);
  }

  if (has_filter("cocoon_part_after__{$slug}")) {
    do_action("cocoon_part_after__{$slug}");
  }
  return $content;
}
endif;
  • テンプレートの読み込みが適切でない
    Cocoonには独自のテンプレートフックcocoon_template_part()が提供されているため、get_template_part()は使用しません。
    また、フックが既に用意されているため、記述は不要です。
  • パラメータを個別で渡す必要がない
    set_query_var()を使用してパラメータをテンプレート関数に渡します。
    テンプレートとパラメータを組み合わせるには、get_template_part_with_option()関数を使用します。

課題

Cocoon設定→SNSシェアには、以下の2つの設定があります。

  • トップシェアボタン(SS_TOP)
  • ボトムシェアボタン(SS_BOTTOM)

どちらの設定を使用するかが課題です。
今回は、モバイルシェアボタン(SS_MOBILE)を使用して、Cocoonの設定に関係なく全てのSNSシェアボタンを表示します。

対策

以下に修正後のコードを示します。

add_shortcode('sns_share_buttons', function () {
  ob_start();

  // SNSシェアボタンのテンプレートを取得
  get_template_part_with_option('tmp/sns-share-buttons', SS_MOBILE);

  return ob_get_clean();
});

さいごに

テンプレート関数が改善され、新たなフックによりテンプレート操作が容易になりました。
これにより、カスタマイズの幅が大きく広がります。

テンプレートフックの使い方がよくないね。
もう少し頑張りましょう(笑)

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