Advanced Custom Fieldsと似てる。
用途
ブロックの種類を選べば本文中にショートコードを埋め込む事ができる。
ContactForm7とかMW WP FORMとか、問い合わせフォームもショートコードが生成されて、任意のページに貼り付けることができる。それは便利っちゃ便利だけど、本文中にフォームを埋め込むことなんてまずない。
ということで、カスタムフィールドにショートコードを登録してテーマ内の任意の場所で表示する、というのをSmart Custom Fieldsでやる。
Smart Custom Fields
Smart Custom Fields はカスタムフィールドを管理するシンプルなプラグインです。
やる
「shortcode」って名前でカスタムフィールドを作ったとする。
通常の表示方法だとショートコードは文字列として書き出されるんで、こんな感じで入れる。
<?php echo apply_filters('the_content', scf::get('shortcode')); ?>
これで該当するページのカスタムフィールドにショートコードを突っ込めばおしまい。
要するにというか
ショートコードを入れるには、これが基本形になるわけで。
<?php echo apply_filters('the_content', ***); ?>
ACFと比較すると分かりやすい。
SCF
<?php echo apply_filters('the_content', scf::get('カスタムフィールド名')); ?>
ACF
<?php echo apply_filters('the_content', get_post_meta($post->ID, 'カスタムフィールド名', true)); ?>
どっちもできる。やれる。
あと、こういうのもある。
<?php echo do_shortcode(SCF::get('カスタムフィールド名')); ?>
追記:出力されない場合
ちゃんと書いたはずなのに、たまに出ないことがある。
そういうときは、だいたい手前でやらかしてる。
よくあるのがWP_Query()の閉じ忘れで、記事一覧を並べた後に問い合わせフォームを設置したのに出ない、phpに直接記述したら表示されるのに何でや、ということがあったり。
<?php
$myQuery = new WP_Query();
$param = array(
'posts_per_page' => '-1',
'post_type' => '***',
);
$myQuery->query($param);
$questionNum = 0;
?>
<?php if($myQuery->have_posts()): ?>
<ul>
<?php while($myQuery->have_posts()) : $myQuery->the_post(); ?>
<li>***</li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
<?php wp_reset_query(); ?>
<?php echo do_shortcode(SCF::get('***')); ?>
この書き方の場合は「wp_reset_query();」で閉じる。
閉じないと出力した記事情報に持っていかれてるのか、表示ページに設置したカスタムフィールドが拾えてないっぽい。
気をつけましょう。
コメント