スマートカスタムフィールドのmeta_id
-
スマートカスタムフィールドのグループ内の特定のフィールドの内容で検索し、
同じグループ内の別のフィールドの値を編集したいです。update_post_metaでは、グループに紐づいた検索ができないので、
まず、get_post_meta等で、対象フィールドのmeta_id取得してから、
SQLからupdateしようとしたのですが、
どのレコードで、グループ内のmeta_idの紐づけやってるのかが、
把握できず、頓挫してます。表示時は、
$field_group = SCF::get( ‘group_name’ );
foreach ( $field_group as $fields ) {
}
みたいに、配列で取得するので、グループを配列として紐づけてる部分が
どこかにあると思うのですが、当方のスキル不足でわかりません。何かうまいやりかたをご存知の方いましたら、ご教授お願いします
-
このトピックは
csk2018が7年、 2ヶ月前に変更しました。
-
このトピックは
-
はい、わかりづらいですよね。すいません。
具体的には、
ある投稿のスマートカスタムフィールドのグループに、
AとBという2つサブフィールドがあり、
Aの値が一致した場合、Bの値を変更する、
という処理を書きたいのですが、
こちらが知りたいのは、Aと紐づいたBの取得方法です。1) AとBをグループとして紐づけてるレコードがDB上のどこにあるか
2) Bのdb上のmeta_idを取得する方法(関数)があるか
3) meta_idからSQLをupdateする以外に、Bを変更できる方法(関数)があるか
です。
多分
1:
wp_postmeta
のsmart-cf-setting
2:
$wpdb->get_results
等でBのmeta_value
を指定して3: カスタムフィールドを追加や更新する関数は基本的にpost_idの指定が必要なので
$wpdb->get_results
で取ってUPDATEするしか無理たと思うです。
こんにちは
Bのmeta_idを知る必要はない気がしますが・・・
wp_postmetaのmeta_keyがBのものをアップデートすれば良いだけで、そのmeta_idは必要ないのではと思います。
過去のリビジョンなどは更新したくないのであれば、wp_postと結合してpost_typeが’post’のものに紐付いているmeta_valueを更新すれば良いと思います。Aとグループになっているカスタムフィールド名(meta_key)が必要なのであれば、manboさんがおっしゃっているsmart-cf-settingの値を(phpで)アンシリアライズすれば取得できると思います。
よーく読んでみたら・・・
まずget_post_meta等で、対象フィールドのmeta_id取得してから
と書いてますが、
get_post_meta
でmeta_id
は取得できません。取得できるのはカスタムフィールドの値だけです。Aの値が一致した場合、Bの値を変更する、
Aが何と一致なのか、どこでどうするのか条件が分からないですが
$value = get_post_meta( get_the_ID(), 'A', true ); if( $value === '???' ); update_post_meta( get_the_ID(), 'B', $value );
こんな感じになるんじゃないかと思います。
- トピック「スマートカスタムフィールドのmeta_id」には新たに返信することはできません。