WordPress のカスタムフィールドを簡単・便利に使えるようになるプラグイン「Smart Custom Fields」作った。

scf

既に似たようなプラグインはいくつかあって、Advanced Custom FieldsCustom Field SuiteCustom Field Template などが有名です。

僕は Advanced custom Fields を良く使っておりまして、このプラグイン、とにかく使い勝手が良くて「独自のフィールドを追加する」という点においてはものすごく便利です。しかし、複数の値を持てるフィールド(チェックボックスなど)の値をシリアライズして保存する、という仕様であるため、Meta Query したいときやカスタムフィールドの検索をしたいときなどにちょっと問題がでてしまったりしていました。

また、多機能過ぎて設定画面が肥大化しており操作がちと面倒だったり、ちょこちょこ WordPress プラグインの作法に沿っていないような部分があったり、設定データを飛ばしてしまったりしたので、もういっそ自分でメンテナンスしやすいようにオリジナルのプラグインを作ってしまったほうが良いのではないか、ということで作ってしまいました。
(特に Advanced Custom Fields のヘビーな感じがしっくりきていなかったので、Advanced Custom Fields ほど多機能ではありません。)

Smart Custom Fields の特徴

Smart Custom Fields の主な特徴は以下の通り。

  • Advanced Custom Field では有料の「繰り返し機能」が標準装備!
  • メタデータのリビジョンに対応
  • メタデータのプレビューに対応
  • メタデータを簡単に取得するための便利メソッド
  • プロフィールページにもカスタムフィールドを設置可能

Advanced Custom Field では有料の「繰り返し機能」が標準装備!

Smart Custom Fields には標準で繰り返し機能を使用することができます。また、繰り返すのは一つのフィールドだけでも良いし、複数のフィールドを一つのグループとしてそれを繰り返すこともできます。

メタデータのリビジョンに対応

WordPress のリビジョン機能は、基本的にタイトルと本文のみしか保存しません。Smart Custom Fields を使えば、メタデータもリビジョンデータとして保存するので、メタデータだけ変更を繰り返した場合でも任意のポイントに戻すことが可能です。リビジョン対応は有名プラグインであれば恐らく対応しているのではないかと思います。確認はしていませんが^^;

メタデータのプレビューに対応

WordPress の標準ではプレビューにメタデータは反映されませんが、Smart Custom Fields を使えばプレビューにもメタデータの変更が反映されるようになります。恐らくこの機能についても有名プラグインは抑えているのではないかなーと思います。こちらも確認はしていません^^;

プロフィールページにもカスタムフィールドを設置可能

詳しくは下記の記事をご覧ください。

メタデータを簡単に取得するための便利メソッド

下記のメソッドでメタデータを良い感じに取得できます。

// 特定のフィールドのデータを取得(例:メタキーが product-id の場合)
$product_id = SCF::get( 'product-id' );
echo esc_html( $product_id );

// 特定のグループのデータを取得(例:グループ名が repeat-group の場合)
$repeat_group = SCF::get( 'repeat-group' );
foreach ( $repeat_group as $fields ) {
    /*
    適当な処理

    // 値の出力
    echo $fields['設定したフィールド名'];

    とか

    foreach ( $fields as $field_name => $field_value ) {
       // フィールド名の出力
       echo esc_html( $field_name );
       // 値の出力
       echo esc_html( $field_value );
    }
    */
}

// 全てのデータを取得
$all_data = SCF::gets();

// 投稿IDを引数として指定することもできます。
$product_id = SCF::get( 'product-id', 110 );
$all_data = SCF::gets( 110 );

///////////////////

// 現在の記事の著者IDを取得
$user_id = $post->post_author;
 
// 'カスタムフィールド名' のデータを表示
echo SCF::get_user_meta( $user_id, 'カスタムフィールド名' );
 
// 全てのメタデータを表示
var_dump( SCF::get_user_meta( $user_id ) );

///////////////////

// ID が 110 のカテゴリーの 'カスタムフィールド名' のデータを表示
echo SCF::get_term_meta( 110, 'category, 'カスタムフィールド名' );
 
// 全てのメタデータを表示
var_dump( SCF::get_term_meta( 110, 'category' ) );

使用可能なフィールドの種類

  • Text
  • Textarea
  • Radio
  • Select
  • Checkbox
  • Wysiwyg editor
  • Image
  • File
  • Relation(任意の投稿タイプの投稿と関連付け)
  • Color picker
  • Date picker
  • Boolean

今後の開発予定

とりあえず最低限欲しかった実装できたので、後はぼちぼち下記の機能をつけていければなーと。(やり方がわからなかったり大変そうなものもあるので半分妄想…。プルリクお待ちしております。)

  • 編集画面でのメタボックスの表示をajax化して、カテゴリー選択時やタクソノミー選択時に動的に適切なメタボックスに切り替える。
  • リレーションフィールドの種類を増やす(現在は記事のみなので、タクソノミーとかユーザーとか)
  • カスタムフィールド検索ボックス

ダウンロード・インストール

下記からダウンロードするか、管理画面で「Smart Custom Fields」と検索してください。

おまけ:プラグインへのロックインを回避する場合

メタデータの保存方法について

Advanced Custom Field でフィールドの設定を行ってメタデータを保存した場合、データがシリアライズされて保存されてしまう場合があることは前述しましたが、これは WordPress 標準のメタデータの保存方式ではないため、Advanced Custom Field の使用をやめると保存したメタデータが使えなくなってしまいます。Smart Custom Fields はなるべく WordPress の標準のメタデータの保存方法に沿うようにしているので、この点はクリアすることができます。

繰り返しフィールド内における複数値を持ち得るフィールドの使用について

Custom Field Suite の場合はなるべく WordPress の標準に沿うようになっていますが、繰り返しフィールド内で複数値を持ち得るフィールドを使用した場合、保存した値がどの繰り返しグループに所属するものかの情報を保存しておく必要があるため、その情報を独自テーブルに保存するようになっています。なので、Custom Field Suite の使用をやめるとどの繰り返しグループに所属するデータなのかの情報が失われてしまうため、別のプラグインに乗り換えた場合に管理画面上でただしくデータを表示することができません。

この点については僕の Smart Custom Fields も同様の問題があり、こちらの場合はテーブルではなくメタデータにどの繰り返しグループに所属するデータなのかの情報を保存しています。本当はそのような余分なメタデータなしで実現したかったのですが、WordPress のメタデータ機能自体に繰り返し機能というかメタデータを階層化する仕組みがないため、この点については妥協せざるを得ませんでした…。いつでも他のプラグインに乗り換えることができるようにしておきたい場合は、繰り返しフィールド内では複数値を持ち得るフィールドを使用しないようにしたほうが良いかと思います。

便利メソッドについて

Advanced Custom Field にはget_field()、Custom Field Suite にはCFS()->get()のようなメタデータを簡単に取得したり出力したりするための便利メソッドが用意されています。これらのメソッドはテンプレートに記述することになりますが、プラグインの使用をやめた場合、当然これらのメソッドは使用できなくなるので、PHPの関数・メソッドの未定義エラーが発生しページが見れなくなってしまう可能性があります。Smart Custom Fields にも同じような便利メソッドを用意していますが、いつでも他のプラグインに乗り換えることができるようにしておきたい場合は WordPress 標準のget_post_meta()などを使用したほうが良いかと思います。

MW WP Form

MW WP Form はショートコードベースのフォームプラグインです。多くの機能を持っており、例えば、多くのバリデーションルール、問い合わせデータの保存、そしてグラフ機能集計などを使用することができます。 さらに詳しく

Habakiri

Habakiri

Bootstrap ベースのシンプルな WordPress テーマ。レスポンシブ、多くのカスタマイズ機能。圧縮された CSS・JS を使用する高速化対策。Microformats 対応。Sass、クラスベースの functions.php。 さらに詳しく

basis-stylus

Basis

軽量なレスポンシブ Stylus/CSS フレームワーク。Flexbox ベースのグリッドシステム、疎結合なコンポーネント、バーティカルリズム。 さらに詳しく

この投稿へのコメント

  1. anicho said on 2014年10月10日 at 10:44 AM

    こんにちは

    早速、使わせて頂きました。
    1つ気になる点がありまして
    カスタム投稿タイプをエディタも何もなしで設定した時に
    画像のボタンとWysiwyg が無反応でした。
    カスタム投稿タイプのsupportにeditorがある場合は問題がなかったです。

    カスタム投稿タイプで使う場合はeditorをsupportしないとでしょうか。

  2. sqinq said on 2014年10月10日 at 1:27 PM

    素敵なプラグインありがとうございます!さっそくインストールさせて頂きました。
    もし可能でしたら、いつかリレーションにテンプレートも入れて頂けたりしないでしょうか?
    index.php使用のページに該当カスタムフィールドを表示させる、という……。
    suiteで大変重宝していた機能なので、もしこちらにも同様の機能がついたら嬉しいなぁと思いました。
    でもすごく便利で分かりやすいので今後も使わせて頂きます!

  3. キタジマタカシ said on 2014年10月10日 at 2:16 PM

    anichoさん

    > カスタム投稿タイプをエディタも何もなしで設定した時に
    > 画像のボタンとWysiwyg が無反応でした。
    ご報告ありがとうございます。
    エディタがないとwysiwyg・ボタン用のjsをWordPressがロードしないことを失念しておりました…。
    次回バージョンアップの際に対応するように修正します。

  4. キタジマタカシ said on 2014年10月10日 at 2:21 PM

    sqinqさん

    > もし可能でしたら、いつかリレーションにテンプレートも入れて頂けたりしないでしょうか?
    > index.php使用のページに該当カスタムフィールドを表示させる、という……。
    これは「リレーション(関連)フィールド」ではなく表示条件の設定ということですかね?
    表示条件の設定は後々増やしていきたいと思うのですが、例えば管理画面で使用するテンプレートを選択した瞬間に動的にカスタムフィールドを表示するようにはしたいなーと思っているのですが、まだやり方がよくわからないので時間がかかりそうです。Advanced Custom Field は多分そのようになっていたように記憶しています。Custom Field Suite は確認していませんが…。

  5. tekede said on 2014年10月10日 at 6:52 PM

    さっそくインストールし使わせて頂きました!
    image フィールドに入力した画像を表示したいと思い、Advanced Custom Fieldでの表示方法などを参考に以下のような形で試したのですが表示されませんでした。
    初歩的な質問で恐れ入りますがどのように記述すれば表示することが出来るのか教えて頂けないでしょうか?
    $image_id = SCF::get(‘メタキー’);
    $image = wp_get_attachment_image_src($image_id, ‘full’);
    echo $image[0];

  6. キタジマタカシ said on 2014年10月10日 at 8:49 PM

    tekedeさん

    提示されているコードで問題ないように見えます。ただ、繰り返しフィールド内に image フィールドを配置している場合はご提示のコードだと配列で返ってくるのでforeachなどで処理する必要があります。
    echo $image[0]の前の行でvar_dump( $image_id );var_dump( $image );としてどのような値が取得できているか確認してみてください。

  7. Megumi Sasaki said on 2014年12月22日 at 7:33 PM

    こんにちは。
    いつも素敵なプラグインをありがとうございます!
    今後 Smart Custom Fields に、フィールドの種類として日付入力(デートピッカー)を実装のご予定はありますでしょうか?
    ご検討いただけると大変うれしく思います^^

  8. キタジマタカシ said on 2014年12月22日 at 7:38 PM

    Megumi Sasaki さま

    しようしようとは思っているのですが、なかなか手を付けれずにいます…。
    年末年始の休みを利用して実装できれば良いなと考えています^.^;

  9. Megumi Sasaki said on 2014年12月22日 at 8:33 PM

    お返事ありがとうございます。
    お忙しいですもんね、ご無理なさらず…
    といいつつ、楽しみにしています^^

  10. きゅろーひー (@satohiroid) said on 2015年1月5日 at 5:42 PM

    はじめまして。便利に使わせていただいています!

    php初心者です。
    単体で使うときのようにフィールドに要素がある場合のみ出力させる、を、リピートでも同じ動作をさせたいのですが、どのように書けばよいでしょう。。

    すいませんがお手隙な時に教えていただけると助かります。

  11. キタジマタカシ said on 2015年1月7日 at 7:01 PM

    きゅろーひーさま

    > フィールドに要素がある場合のみ出力させる、を、リピートでも同じ動作をさせたいのですが、どのように書けばよいでしょう。。
    単体の場合も繰り返しの場合も同じようにできます。下記のような感じで試してみてください。

    $loop = SCF::get( 'loop' );
    if ( $loop ) {
        // あるときのみ
       foreach ( $loop as $field_name => $field_value ) {
          // 適当な処理
       }
    }
    
  12. na_okay said on 2015年1月21日 at 6:46 PM

    はじめまして!
    ACFからの乗換えを画策して、プラグインをインストールさせていただきました!

    私の環境だとCustom Post Type Generatorプラグインを有効可していると管理メニューに表示されないようでした。

    下記の環境で使用しています。
    Smart Custom Fields 1.1.0
    Custom Post Type Generator 2.3.0
    WordPress 4.1

    有効可しているプラグインは上記2つのみの状態で確認しました。
    また、Custom Post Type Generatorは最新版の2.3.0でも前バージョンの2.2.4でも変わらずでした。

    ご報告までー。

  13. キタジマタカシ said on 2015年1月21日 at 6:58 PM

    na_okay さま

    Smart Custom Fields の管理画面はカスタム投稿タイプで作成されているので、カスタム投稿タイプを管理する Custom Post Type Generato とコンフリクトする部分があるのかもしれませんね。時間があるときに検証してみます。ご報告ありがとうございます!

  14. tekede said on 2015年2月8日 at 2:41 PM

    以前はありがとうございます。画像の表示は上手く行きました。

    別の質問なのですが、
    一つのページに複数のループがあるときにそれぞれのループで別のSCFのグループを読み込むと後のグループの方が上手く読み込まれないのですが複数ループでは表示できないのでしょうか?

    以下のような構成です

    have_posts() ):
              $a->the_post();
    $scf1 = SCF::get('scf1');
    
    foreach($scf1):
    // 表示される
    endforeach;
    
    endwhile;
    ?>
    
    have_posts() ):
              $b->the_post();
    $scf2 = SCF::get('scf2');
    
    foreach($scf2):
    // 表示されない(Warning: Invalid argument supplied for foreach() i)
    endforeach;
    
    endwhile;
    ?>
    

    表示されない時に class.scf.php の function get()内の変数 $settings に代入される値が一つ目のループのものになってしまうところまではわかったのですがどうすれば解決できるのかがわかりません。よろしければ返信お願い致します。

  15. ken said on 2015年2月10日 at 3:36 PM

    初めまして、いつも使用させていただいております。

    1つ質問がございます。
    「select」「radio」「check」を選択した際に
    ACFのように表示名と値を異なるように設定をしたいのですが、
    どのように書いたらよいか教えていただければと思います。

    よろしくお願いします。

  16. kossy said on 2015年2月10日 at 6:33 PM

    はじめまして。プラグインをインストールして利用させて頂きました。
    まさに探していたプラグインだったので助かりました!

    今日はimageフィールドで追加した画像パスの取得について質問させてください。

    2014年10月10日のtakedaさんとのやりとりを参考に

    $repeat_group = SCF::get( 'ranking-admin' );
    $image = wp_get_attachment_image_src($repeat_group, ‘full’);
    var_dump( $repeat_group );
    var_dump( $image );
    

    と書いて値を確認してみたのですが、imageフィールドの箇所には[“post-image”]=> string(2) “52” と数字しか入っていませんでした。
    数値の取得の仕方が何か間違っていますでしょうか?

    お手数かけてすみませんがお時間あるときに教えていただけないでしょうか。

  17. キタジマタカシ said on 2015年2月10日 at 10:04 PM

    kenさま

    「select」「radio」「check」を選択した際に
    ACFのように表示名と値を異なるように設定をしたいのですが、

    将来的にはできるようにしようと思っていますが、現在はわけることはできません。

  18. キタジマタカシ said on 2015年2月10日 at 10:06 PM

    kossyさま

    imageフィールドの箇所には[“post-image”]=> string(2) “52” と数字しか入っていませんでした。

    Smart Custom Fields では、画像・ファイルフィールドはURLではなくIDを返します。IDから画像のURLを取得するには wp_attachment_urlwp_attachment_image_src を使用してください。

  19. ken said on 2015年2月12日 at 8:24 PM

    ご返信ありがとうございました。
    実装の件、楽しみにしております。

    また何かありましたら、ご質問させていただきます。

  20. kossy said on 2015年2月17日 at 8:13 PM

    ご返信ありがとうございました。お礼が遅くなって申し訳ございません。
    教えて頂いた内容をもとにwp_get_attachment_urlで画像パスが拾えました!
    大変助かりました。どうもありがとうございました。

  21. yuko said on 2015年2月24日 at 6:10 PM

    プラグインを使用させていただきました。
    ありがとうございます。
    質問がありますが、投稿がなかったときに、「投稿がありません」のように表示させることは可能でしょうか。
    お時間ありますときご回答いただけると幸いです。
    よろしくお願いします。

  22. キタジマタカシ said on 2015年2月26日 at 1:26 AM

    yuko さん

    質問がありますが、投稿がなかったときに、「投稿がありません」のように表示させることは可能でしょうか。

    これはどこについてのことでしょうか?

  23. kame said on 2015年3月6日 at 10:35 AM

    いつも使わせて頂いています。

    プレビューで表示する際、function.phpへの設定が必要でしょうか。
    プレビューの際にSCF::gets();の中身が空になってしまいます。

    良いプラグインを有難うございます。

  24. kame said on 2015年3月11日 at 12:19 PM

    すみません。

    バージョンあげたら、自分の環境でもプレビューいけました!
    素晴らしい!

  25. suzuyan said on 2015年3月12日 at 7:21 AM

    いつも使わせて頂いております。

    管理画面の固定ページ編集画面に表示させる際の方法でご確認できると助かります。

    環境:WP(4.1.1)、Smart Custom Fields(1.2.0)

    目的としましては、複数の固定ページ(管理画面の固定ページ編集画面)に、それぞれ別の入力フィールドを追加したいと考えています。

    Smart Custom Fields では、「表示条件」を設定できますので、ここで「固定ページ」のチェックボックスをONにし、「投稿 ID」に固定ページのpostIDを設定しています。
    上記の設定にて、以前は実現できていたように思います(勘違いかもしれません)が、本日Smart Custom Fields(1.2.0)にバージョアップし、確認していますと、全ての固定ページに全ての入力フィールドが表示された状態になっていました。

    上記、利用方法としては正解でしょうか。不正解の場合は、実現する設定方法は現状でありますでしょうか。

    よろしくお願いします。

  26. キタジマタカシ said on 2015年3月12日 at 8:33 AM

    suzuyanさん
    ご報告ありがとうございます!おそらく不具合だと思いますので、なるべく早く修正版を出します。お急ぎの場合は過去のバージョンを公式ディレクトリからダウンロードしてお使いください。

  27. suzuyan said on 2015年3月12日 at 11:34 AM

    ご回答ありがとうございます。
    過去のバージョン(1.1.3)に戻したところ、正常に表示されるようになりました。

    また連投で恐縮ですが、以下の方法を解決できずに悩んでおります。

    目的としましては、複数の固定ページ(管理画面の固定ページ編集画面)に、それぞれSmart Custom Fieldsの入力フィールドを持ち、値を入力します。
    複数の固定ページの内容は、全てトップページ(フロントページ)に表示させたいのですが、以下のように記載し、それぞれでSmart Custom Fieldsの値を呼ぶと、2つ目のhave_posts()の中では全て空欄になってしまいます。

    ‘1’, /* 投稿ID */
    ‘post_type’ => ‘page’, /* 投稿タイプ */
    ); ?>

    ‘2’, /* 投稿ID */
    ‘post_type’ => ‘page’, /* 投稿タイプ */
    ); ?>

    念の為投稿IDを指定する「SCF::get( ‘product-id’, 110 );」の手法も試しましたが、こちらも表示されませんでした。

    同じ仕組みを「Advanced Custom Fields」で行うといずれも表示されるようです。

    わたしがSmart Custom Fieldsの仕組みがわかっていないのだと思うのですが、なにかアドバイスいただけることがありましたら、いただけますと助かります。

    よろしくお願いします。

  28. suzuyan said on 2015年3月12日 at 12:15 PM

    すみません。上記、コード部分がうまく表示されませんでした。

  29. キタジマタカシ said on 2015年3月12日 at 12:29 PM

    suzuyanさん
    公式ディレクトリに修正版をアップいたしました(v1.2.1)。

    すみません。上記、コード部分がうまく表示されませんでした。

    こちらでもコードが確認できませんので、<? の部分を <? として再度投稿してもらえますか?

  30. suzuyan said on 2015年3月12日 at 1:49 PM

    お手数をお掛けします。
    修正して投稿してみます。

    <?php
    $args = array(
    	'p' => '1', /* 投稿ID */
    	'post_type' => 'page', /* 投稿タイプ */
    ); ?>
    <?php query_posts( $args ); ?>
    <?php if (have_posts()) : ?>
    	<?php while (have_posts()) : the_post(); ?>
    
            <?php echo SCF::get( 'scf-pg01-01' ); //ここで値を呼んでいます ?>
    
    	<?php endwhile; ?>
    <?php endif; ?>
    <?php wp_reset_query(); ?>
    
    <?php
    $args = array(
    	'p' => '2', /* 投稿ID */
    	'post_type' => 'page', /* 投稿タイプ */
    ); ?>
    <?php query_posts( $args ); ?>
    <?php if (have_posts()) : ?>
    	<?php while (have_posts()) : the_post(); ?>
    
            <?php echo SCF::get( 'scf-pg02-01' ); //ここで値を呼んでいますが空欄になり表示されません ?>
    
    	<?php endwhile; ?>
    <?php endif; ?>
    <?php wp_reset_query(); ?>
    

    よろしくお願いします。

  31. キタジマタカシ said on 2015年3月12日 at 4:13 PM

    suzuyanさん
    いただいたコードをコピペして試してみましたが、こちらで確認した限りでは正常に動いてますね…。
    デフォルトテーマ + Smart Custom Fields 以外のプラグインを全て停止して試すとどうでしょうか?

  32. suzuyan said on 2015年3月12日 at 4:53 PM

    ご確認ありがとうございます。
    環境依存でしたか・・・大変失礼いたしました。
    調査を進めまして、原因が分かりましたら、ご連絡致します。

  33. suzuyan said on 2015年3月12日 at 7:15 PM

    「2015年3月12日 at 11:34 AM」の件につきまして、現象がどうしても発生してしまいますので、一度記載させてください。

    環境:WP(3.8.5、4.1.1)、プラグインは「Smart Custom Fields(1.2.0)」のみ、パーマリンク設定はデフォルト、表示設定は「最新の投稿」、選択テーマは3.8.5はTwenty Eleven、4.1.1ではTwenty Thirteenを選択しました(いずれも修正なし)

    念の為、2つバージョンのWP環境で検証しましたが、いずれも最初に呼び出した固定ページで設定したSmart Custom Fieldsの値のみ表示されてしまいました。
    以下、構築手順となります。

    1.固定ページを2つ作成します(A、Bとします)
    2.「Smart Custom Fields」にて、A、Bそれぞれの固定ページにのみ表示されるフィールドを作成します。よって2つフィールドを作成し、設定で「カスタムフィールド(1つ)」「固定ページ選択」「投稿 ID設定」を行います。
    3.固定ページA、Bでそれぞれ、「Smart Custom Fields」で作成したカスタムフィールドに値を入力します
    4.「2015年3月12日 at 1:49 PM」のコードを、index.phpに記載します(ヘッダ、フッタは無し。固定ページA→Bの順に記載する、とします)

    上記を表示すると、トップページで固定ページAのカスタムフィールドの内容のみ表示されます

    現在のところ以上となります。

  34. suzuyan said on 2015年3月13日 at 5:09 AM

    一応の解決策がみつかりましたので記載させていただきます。

    カスタムフィールドの値取得時にSCF::get()ではなく、get_post_meta()を使うことで値が取得出来ました。
    ただし、この方法ですとグループのテーブル値がうまく取得出来ず、続けての試行錯誤が必要かと思われます。

    ※こちら一連の現象は、別書き込みでtekedeさんが記載しておられる「2015年2月8日 at 2:41 PM」の現象とおそらく同じなのではないかと予想しています

  35. キタジマタカシ said on 2015年3月13日 at 9:52 AM

    suzuyanさん
    なるほど、投稿IDを指定した場合に不具合が起こってしまうようです。詳しくありがとうございます。近日中に修正します。

  36. キタジマタカシ said on 2015年3月14日 at 1:32 PM

    suzuyanさん
    ご報告いただいた不具合の修正をおこなったバージョンを公式ディレクトリにアップしました(v1.2.2)。こちらの環境では正しく動作しているので、お手すきのときにご確認ください!

  37. suzuyan said on 2015年3月15日 at 4:05 PM

    早々のご対応、大変助かりました。
    早速使わせていただきましたところ、無事に動作を確認しました。

    カスタムフィールドを繰り返し指定で簡単に入力(削除)できるのは「Smart Custom Fields」しかありませんので、これからも利用させていただければと思います。
    ※ループ設定のチェックボックスをOFFにしてもそのまま使えるのも助かります

  38. なかとし said on 2015年3月17日 at 2:35 AM

    お世話なります、プラグインを利用させて頂いております。

    不躾なご質問で恐縮なのですが、本プラグインをフロントエンド側(ユーザ表示されているページ)に、設定した入力エリアを設けることは出来ますでしょうか??

    下記に近しいイメージです。
    http://www.hanano-ya.jp/wordpress/3417

    具体的な用途として、会員サイトの制作を行っております。
    一般ユーザからの投稿画面に独自の項目を設けたく、このプラグインがフロントエンド側でも出来ればなと思っております。

    お忙しいところ恐縮ですが、利用方法などあればご教授頂ければ幸いです。

  39. anicho said on 2015年4月27日 at 10:16 AM

    こんにちは~
    本プラグイン、ホントに素晴らしく設置時には必ずといっていいほど利用させていただいております。

    今回、固定ページで投稿IDを入れ限定して設置しました。
    その時のプレビュー時に値がないようでプレビューうまく表示できませんでした。
    投稿IDを限定しない時にはプレビューが表示できたので
    限定した時の現象のように感じています。

    以下の環境でテストしてみました。
    WordPress:4.2
    プラグイン:1.3.2
    テーマ:Twenty Fifteen
    その他のプラグインは全て無効にして確認しました。

  40. ken said on 2015年6月25日 at 4:26 PM

    いつもプラグイン使用させていただいております。

    1点、使用方法の確認をさせてください。
    「繰り返し」の中にチェックボックスのサブフィールドを設置しました。
    ただ選択肢は1つで、使用方法としては有効の時にチェックを入れる
    というように使用しております。

    しかし、投稿後再度投稿編集画面を開くと
    チェック入れていないものにチェックが入っていたり
    チェック入れたものにチェックが入っていなかったり
    正しく反映しているものもあるという現象になっております。

    チェックボックスの場合、選択肢が1つだけという使い方は正しいでしょうか?
    もし正しくないのであれば、ラジオボタンで対応しようかとは考えておりますが、
    この状態が改善されるのであれば、引き続きチェックボックスを使用していきたいと思っております。

    ご確認よろしくお願いします。

    環境
    WordPress:4.2.2
    プラグイン:1.4.0

  41. キタジマタカシ said on 2015年6月26日 at 9:19 AM

    kenさん
    こちらでは現象を再現できませんでした。ご使用のテーマや、Smart Custom Fields 以外のプラグインの影響というのも考えられますので、デフォルトテーマ(Twenty Fifteen等)で、Smart Custom Fields 以外の全てのプラグインを停止しても状況が再現するか確認されてみてください。

    ちなみに、チェックボックスで選択肢が1つだけという使い方ができないという制限は特に行っておりませんので、ご自身の使いやすいように設定されて良いのではと思います。

  42. saito said on 2015年7月4日 at 3:23 PM

    便利なプラグインありがとうございます。

    一つ質問させてください。
    Wysiwyg editorを使って画像を挿入すると、パスが間違っている為に画像が表示されません。

    例   正しいパス    /wp/wp-content/uploads/2015/07/sample.jpg

    × 表示されるパス /wp-content/uploads/2015/07/sample.jpg

    恐らくはテスト環境の為、WordPress アドレスとサイトアドレスを変更しているからだと思うのですが、
    設定等を変更して修正できるでしょうか。

    ローカル環境でアドレスを変更しなかった場合は正常に表示されました。
    また、サーバー上でも画像フィールドでは普通に表示する事ができました。

  43. キタジマタカシ said on 2015年7月11日 at 10:03 AM

    saitoさん

    恐らくはテスト環境の為、WordPress アドレスとサイトアドレスを変更しているからだと思うのですが、

    とのことですが、データベース内のURLも全て置換済みでしょうか?

  44. Toshi said on 2015年7月30日 at 6:12 PM

    大変素晴らしいプラグインをありがとうございます。

    2点、要望というか質問というか、があります。

    1. WYSYWIGですが、こちら投稿本文エリアのように、「ビジュアル」「テキスト」の切り替えができるようにはならないでしょうか。HTMLソースの記述、特にclass名の追加などが行いたく、かつ本文内に画像を挿入するためのメディア追加ボタンも併用したいので、WYWYWIGのテキストモードがあれば非常にありがたいのですが。

    2. カスタムフィールドの表示条件として、任意のカテゴリーの記事だけ表示、ということはできませんでしょうか。記事や固定ページの投稿IDで表示、非表示の選択ができるのはありがたいのですが、さらにカテゴリーによっても表示・非表示がコントロールできればなお便利かと思うのですが。

    ちょっと調べてみて、functions.phpにソースを記述すればできそうな気もしたのですが、よくわからず・・・よろしければサンプルのソースでもご呈示いただければ大変助かります。

    勝手なお願いで恐縮ですが、どうぞよろしくお願いいたします。

  45. kao3 said on 2015年8月27日 at 9:02 PM

    Smart Custom Fields、ほとんどのところでとても重宝しておりありがたいです。
    一部あると助かる機能なのですが
    「リレーション」を選んだ時に「投稿タイプ」を選び、さらに「カテゴリー」を設定できるとたいへん助かるのですが、
    その機能または何らかのカスタム方法は、まだないのでしょうか?

  46. nakaguma said on 2015年10月29日 at 10:54 AM

    いつも素晴らしいプラグインをありがとうございます。とても助けられています。

    さて、6月にkenさんが書き込んでおられた現象ですが、実は私も経験しています。

    それで、新しいWordPressサイトを作成して、

    プラグイン:Smart Custom Fieldsのみ有効
    WordPress:4.3.1
    テーマ:Twenty Fifteen

    上記の環境で、「繰り返し」の中にチェックボックスのサブフィールドを設置しました。(私は複数選択で設置)
    そして、投稿ページでそれらを使用しましたが、「更新」ボタンを押すたびに、チェックを入れたところのチェックがはずれていたり、チェックを入れていないところにチェックが入ったり…、奇妙な動きになりました。

    プラグインやテーマとの干渉ではなさそうですので、ご報告させていただきました。

    ※ちなみに、「繰り返し」ではないチェックボックスに関しては、正常に動いておりますので、ありがたく使わせていただいております。

  47. 山岡篤 said on 2015年11月15日 at 11:04 PM

    必須項目にしたりできれば、更に嬉しいプラグインでして、次のバ-ジョンアップ時にはご検討いただけませんでしょうか。
    更に嬉しいどころか、完璧に「Advanced Custom Fields」を代替できる素晴らしいプラグインになると思います。
    どうかよろしくお願いします。

  48. Toshi said on 2015年11月17日 at 10:14 PM

    お世話になっております。
    Smart Custom Fields1.6.0, WP4.3.1で使用しておりますが、すでに作成済みのフィールドに新しいフィールドを追加して「更新」をクリックすると、作成済みだったフィールドが消えて新規に作成したフィールドだけになってしまったり、すべてのフィールドが消えてしまう、という現象が起きています。Windows上のXAMPPに設置したWPと、レンタルサーバーのWPの両方で同じ現象が起きています。何が原因なのか、おわかりになりますでしょうか。
    お忙しいところすいませんがよろしくお願いいたします。

  49. キタジマタカシ said on 2015年11月17日 at 10:23 PM

    Toshi さん

    情報ありがとうございます!!検証します。

  50. キタジマタカシ said on 2015年11月17日 at 11:52 PM

    現象確認いたしました。修正を入れた 1.6.1 を公開しましたのでお試しくださいませm(_ _)m

  51. sky said on 2016年1月4日 at 8:00 PM

    大変便利に活用させていただいております。

    過去のコメントにもありますが、繰り返しの中にチェックボックスを置いた場合の
    挙動を確認させてください。
    色々と試行錯誤してみましたが、チェックを一つも入れないグループとチェックを入れたグループが混在すると、
    チェックを入れていないグループにもチェックが入ってしまうようです。

    とりあえずではありますが、class.controller-base.phpファイルの198行目を以下のように変更したところ
    問題が回避できました。
    ($num_numが0の場合、空配列を返しています)

     if ( $now_num ) {
      $value = array_slice( $value, $start, $now_num );
     }
     else{
      $value = array();
     }

    ご参考にして頂ければ幸いです。

  52. キタジマタカシ said on 2016年1月5日 at 10:51 AM

    sky さん
    ご報告と修正案のご提示ありがとうございます!ぜひ反映させていただきたいと思うのですが、よろしければどのようなグループ・フィールドを定義しているか詳しく教えて頂けませんでしょうか?

  53. sky said on 2016年1月5日 at 3:51 PM

    早速のご返事ありがとうございます。

    以下の4フィールドを1つのグループとして、繰り返し有りと定義しています。

    テキスト
    チェックボックス(選択肢は一つ)
    テキスト
    WISYWIG

    投稿画面で上記グループのメタデータを例えば3つ入力し、その中のチェックボックスを
    一つでもチェックして保存すると、他の2つのグループのチェックボックスにもチェックが付いている状況です。

    他にも必要な情報がありましたら何なりと仰ってください。

  54. キタジマタカシ said on 2016年1月5日 at 10:25 PM

    sky さん
    ありがとうございます!ひとまずコメント頂いた修正を入れてバージョンアップを行いました。今回頂いた情報をもとにもう少し根本的な原因など調べてみたいと思います。

  55. sky said on 2016年1月6日 at 12:53 PM

    先程、バージョン1.6.5を適用して問題なく動作することを確認致しました。
    素早い対応本当にありがとうございました!
    今後ともよろしくお願い致します。

  56. 松永健太 said on 2016年1月19日 at 11:08 AM

    お世話になっております。
    Smart Custom Fieldsバージョン 1.6.3
    Wordpressバージョン 4.3.1
    で使用させていただこうと思っております。

    繰り返し部分ですが、
    明確ではないのですが、多数(30回以上!?)繰り返すと、
    データベース上からデータが数個消えてしまう現象があり、
    ページが作成できず困惑しております。

    例えば、30回リピートさせて、「更新」すると
    20回分しか登録されない。

    post_idごとに制限があるのでしょうか?
    また、
    対処方法ございますでしょうか?

    何卒宜しくお願いします。

  57. 松永健太 said on 2016年1月19日 at 2:08 PM

    先ほど投稿した
    者ですが、php.iniを設定することで解決しましたので、連絡させていただきます。
    急なコメントすみませんでした。

  58. 榎本 said on 2016年8月24日 at 10:00 AM

    初めまして、先にメッセージをしました榎本です。

    いつも便利に使わせていただいていおります。
    繰り返しができるところが気に入っております。

    ところでwysiwygエディターのビジュアルモードについて調べてみたのですが、どうやらPタグで囲まれないので、テンプレートで出力すると改行などがかからないようです。
    自動整形機能をOFFにしているわけではなく、固定ページや投稿ページのビジュアルエディタでは問題なく動作しております。

    設置する側(サイト制作者側)はビジュアルエディタを使うことはあまりないので気にしていませんでしたが、カスタム投稿などを希望されている、HTMLなどができない方(運営側)はこの仕様だと困るようです。

    何かわかりますでしょうか?

  59. キタジマタカシ said on 2016年8月24日 at 2:38 PM

    榎本さん
    お使いのテーマや何らかのプラグインで `wpautop` や `the_content` フィルターを無効にしていませんでしょうか?

  60. 榎本 said on 2016年8月24日 at 5:45 PM

    先ほど標準テーマ(twentysixteen)にテンプレートをいれて他のプラグインをOFFで試したのですが同じでした。
    とりあえず解決したのですが、テンプレートでget_post_metaで取得の値をそのまま使っていたのですが、nl2brで囲ってあげることで改行されるようになりました。
    wysiwygエディターを使うときはそうします!。

コメントを残す

この投稿へのトラックバック

  1. […] http://2inc.org/blog/2014/10/09/4426/ […]

  2. […] WordPress のカスタムフィールドを簡単・便利に使えるようになるプラグイン「Smart Custom Fields」作った。 | モンキーレンチ […]

  3. […] それが「Smart Custom Fields」 […]

  4. […] › Smart Custom Fields « WordPress Plugins WordPress […]

  5. […] WordPress のカスタムフィールドを簡単・便利に使えるようになるプラグイン「Smart Custom Fields」作った。 | モンキーレンチ […]

  6. Smart Custom Fieldsが気になる | tamamura cana said on 2015年3月2日 at 7:03 PM

    […] http://2inc.org/blog/2014/10/09/4426/ […]

  7. […] ●「Smart Custom Fields」はカスタムフィールドを作りたいときにシンプル簡単に設置できるプラグイン。 […]

  8. […] )」「固定ページ選択」「投稿 ID設定」を行います。 [紹介元] WordPress のカスタムフィールドを簡単・便利に使えるようになるプラグイン「Smart Custom Fields」作った。 | モンキーレンチ […]

  9. […] ※解説に関してはhttp://2inc.org/blog/2014/10/09/4426/へ […]

  10. […] WordPress のカスタムフィールドを簡単・便利に使えるようになるプラグイン「Smart Custom Fields」作った。より引用 […]

  11. Smart Custom Fields | 曲豆製作所 said on 2016年7月27日 at 1:35 PM

    […] 作者様サイト→http://2inc.org/blog/2014/10/09/4426/ […]

トラックバック URL