[wp]Smart Custom Fieldsでショートコードを埋め込む

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();」で閉じる。
閉じないと出力した記事情報に持っていかれてるのか、表示ページに設置したカスタムフィールドが拾えてないっぽい。

気をつけましょう。

コメント

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