[wp]Smart Custom Fieldsの使い方メモ

自分からは使わないけど、使う機会が多くなってきた。

Smart Custom Fieldsとは

端的に言うと、AdvancedCustomFieldsよりもできることが多くて AdvancedCustomFieldsよりも扱いづらい。

AdvancedCustomFieldsに有料の拡張のやつを足せばそっちのほうが使いやすいので、個人的にはオススメ。だけど、2大巨頭みたいな感じもあるんで案件によってどっち使ってるか分からんのでSmart Custom Fieldsにも慣れといたほうがいい。

できることっていうのは、「繰り返し」が使えるかどうか。基本的には「用意した項目に入力する」だけで事足りるんだけど、tableの行数の増減とか、動的なコンテンツを仕込めると便利な場合がある。

厳密に言えばもっと違いはあるけど、ざっくりとそのへんで使い分け。

出力する

基本形。

//呼び出す
$sample = scf::get('sample');
//表示する
echo $sample;

特定ページのやつを出力する

応用。

//呼び出す
$sample = scf::get('sample',【投稿ID】);
//表示する
echo $sample;

改行タグ付きで出力

テキストエリアを使う場合、<br>を出力時に追加しないとベタ打ちのまま表示される。

//呼び出す
$sample = scf::get('sample');
//表示する
echo nl2br($sample);

画像の出力

個人的にはパスだけ出すのが好み。

//呼び出す
$image = scf::get('image'); 
//表示する
echo wp_get_attachment_image($image);
//サイズ指定する場合
echo wp_get_attachment_image($image,'medium');
//画像パスだけ表示
echo wp_get_attachment_url($image); 

ラジオボタン、セレクトのあれこれ

keyだけが取得されるんで、値を直接表示させたいならSCF設定の際に値とkeyを同じものにしておく。

//呼び出す
$select = scf::get('select');
//条件分岐
if($select == 'key01'){}
elseif($select == 'key02'){}
elseif($select == 'key03'){}
elseif($select == 'key04'){}

見やすいので今回の条件分岐は{}で区切って書く。

チェックボックス

foreachで回す。

//取得
$checkboxAll = scf::get('checkbox');
//表示
foreach( $checkboxAll as $checkbox ){ 
	echo $checkbox;
}

繰り返しフィールドを扱う

foreachで回す。checkboxと似てる。

//取得
$repeat = SCF::get('repeat'); 
//表示
foreach( $repeat as $fields ){
    echo $fields['field01'];
    echo $fields['field02'];
}

真偽

そんな難しくない。真だと中身があって偽だと空っぽなので、条件分岐を作る場合は結構シンプルになる。

//取得
$check = SCF::get('check');
//条件分岐
if( $mycheck ){
    //チェックあり
}else{
    //チェックなし
}

繰り返しの中で扱う場合はこんな感じ。

<?php
    $repeat = SCF::get('repeat'); 
    foreach( $repeat as $fields ):
        $link = $fields['link'];
        $check = $fields['check'];
        $target = ''; //初期値設定
        if($check){ $target = 'target="_blank"';}
?>
<a href="<?php echo $link; ?>" <?php echo $target; ?>></a>
<?php endforeach; ?>

空欄チェック

これがSCFで一番嫌い。みんないろんな書き方してる。

//case01
if(get_post_meta($post->ID, 'check', true)){
    //空欄じゃない
}else{
    //空欄
}

//case02
$check= SCF::get( 'check' );
if(!empty($check)){
    //空欄じゃない
}else{
    //空欄
}

//画像
$img = get_post_meta($post->ID, 'img', true);
if(!empty($img)){
    //空欄じゃない
}else{
    //空欄
}

独自でカスタムフィールドを作った後に同名でSCFを作った場合の動作

例えば非プラグイン至上主義でコテコテの自作カスタムフィールドで管理してる内容があったとして、全部テキストベースだから使いづらさが半端じゃないとする。

で、プラグインで管理すればいいじゃんよってことでSCFをインストールして、同名のカスタムフィールドを作るとする。

該当の編集画面では「カスタムフィールド」と「SCF」枠があるわけだけど、両方とも同名のカスタムフィールドがあるわけで、登録した内容は両方に表示される。例えると入り口が増えるだけ。バグることはない。ただまあ、編集して保存するときに片方だけ変えてると競合起こしてめんどいことになるかもしれないんで、移行するなら一発で全部書き換えるようにしたほうがいい。

コメント

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