WordPressテーマSANGOの質問

もう一つショートコードを作るときの記述を教えてほしい

アバター
としま

いつもお世話になっています
まずSANGOのデフォルトで使用しているCSSに変更をくわえて自分なりのデザインにしてみたのですが、ショートコードはどのように変更すればよろしいのでしょうか

[open title='ここにタイトル']隠したいコンテンツをここに記載[/open]
ちなみに上のショートコードも記事によって使いわけています

なので自分でデザインしたアコーディオンはまた別にショートコードを入れる必要があるとは思いますが、分からなかったので…

よろしくおねがいします。

SANGOのショートコード一覧
SANGOのショートコード一覧
コメントへの回答
サルワカくん
サルワカくん
2019/04/21

その場合、ショートコードを複製してオリジナルのものを作ることになります。
ショートコードはlibrary/functions/style-shortcode.phpで登録されています。

アコーディオンの場合、

add_shortcode('open', 'sng_insert_accordion'); //アコーディオン

/*********************
アコーディオン
 *********************/
function sng_insert_accordion($atts, $content = null)
{
  $title = isset($atts['title']) ? $atts['title'] : null;
  $content = do_shortcode(shortcode_unautop($content));
  $randid = mt_rand(1, 99999);
  if ($title) {
    return '<div class="accordion main_c"><input type="checkbox" id="label' . $randid . '" class="accordion_input" /><label for="label' . $randid . '">' . $title . '</label><div class="accordion_content">' . $content . '</div></div>';
  } else {
    return '<span class="red">アコーディオンにtitleを入力してください</span>';
  }
}

という部分がショートコードの登録部分になります。なので、子テーマのfunctions.phpでこの2つを複製します。その際、ショートコード名('open'という部分)と関数名(sng_insert_accordionという部分。上のコードのうち2箇所あります)
)がテーマ本体とかぶらないように変えます。

例えば、ショートコード名をmyopen、関数名をmy_sng_insert_accordionとして複製するサンプルです。

//オリジナルのアコーディオンを登録
add_shortcode('open', 'sng_insert_accordion');
function sng_insert_accordion($atts, $content = null)
{
  $title = isset($atts['title']) ? $atts['title'] : null;
  $content = do_shortcode(shortcode_unautop($content));
  $randid = mt_rand(1, 99999);
  if ($title) {
    return '<div class="accordion main_c"><input type="checkbox" id="label' . $randid . '" class="accordion_input" /><label for="label' . $randid . '">' . $title . '</label><div class="accordion_content">' . $content . '</div></div>';
  } else {
    return '<span class="red">アコーディオンにtitleを入力してください</span>';
  }
}

この中のclass名などは自由に変えることができます(もとのショートコードとは別のものなので)。同じ方法でアコーディオンに限らず他のショートコードも自由に複製できます。

アバター
としま
2019/04/21

大変丁寧な回答ありがとう御座いました。是非参考にさせて頂きます。