WordPress標準のカスタムフィールド機能に変更
Advanced Custom Fieldsの機能を全然使ってないのに等しいので、あまり参考にはなりませんが・・。逆に、これから使おうと思ってる人は、簡単なケースでは使わないほうが「Advanced Custom Fields」に縛られないのでよいと思う。
検索で調べるとAdvanced Custom Fieldsの事例が多くて、初心者でよくわからなかった僕は、そのまま使って現在にいたるわけです。実際は、必要なかったといっても過言じゃないですね。
DBの中身に関して
画像URL(img_url)というテキストボックスのフィールドを1つ使っていた場合の事例です。
フィールド構造のレコードが1件だけある
wp_postmetaテーブルに上記のようなものが1件だけ存在します。
SELECT * FROM wp_postmeta WHERE meta_key like 'field_%';
phpMyAdminとかで、SQLを実行できるのなら、上記を実行すれば1レコードヒットするかと思います。グループ定義の数だけあるので、複数使ってるのなら複数件ヒットするかと思います。
記事毎に1レコード
こちらがデータの本体です。
_img_urlというキーで、field_51a8dc6255e02というのでフィールド名が別定義?されてます。あと、img_urlのままでデータの中身があります。
SELECT * FROM wp_postmeta WHERE meta_key='_img_url';
SELECT * FROM wp_postmeta WHERE meta_key='img_url';
SQL実行してみるなら上記で、ヒットするかと思います。
今回の場合
DB
img_urlのレコードがそのまま、Wordpressのカスタムフィールドとして使えるので、そのまま使います。ほかは必要ないので、好みによりますが削除します。
delete FROM wp_postmeta WHERE meta_key='_img_url';
SQL文で消したい場合は、こんな感じ。
投稿画面の入力表示
Wordpress標準の機能でもカスタムフィールドを表示できますが、やぼったくなるので自身で表示・更新できるといいなという話で実際にやってみました。Step 1:投稿画面にカスタム
投稿画面での表示は、上記のような感じで可能です。
PHPコードについて
Advanced Custom Fields機能をつかったPHPコードを書いていたので、それをWordpress標準の関数に置きかえます。
データの取得
$url = get_field("img_url");
↑ Advanced Custom Fields
↓ Wordpress標準
$url = get_post_meta($post_id,"img_url",true);
get_post_metaのほうは、記事ID($post_id)が必要なので要注意
データの更新
$first_img = "https://blog.example.com/img/no-img.png";
$field = get_field_object("img_url");
$field_key =$field['key'];
update_field($field_key,$first_img, $post_id);
↑ Advanced Custom Fields
↓ Wordpress標準
$first_img = "https://blog.example.com/img/no-img.png";
update_post_meta( $post_id, "img_url", $first_img);
update_post_metaに置き換えますが、引数の順番とかにも気を付けてください
コメントを残す