サポート » プラグイン » スマートカスタムフィールドのmeta_id

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • いまいち何がしたいのか見えないんですが…

    トピック投稿者 csk2018

    (@csk2018)

    はい、わかりづらいですよね。すいません。

    具体的には、
    ある投稿のスマートカスタムフィールドのグループに、
    AとBという2つサブフィールドがあり、
    Aの値が一致した場合、Bの値を変更する、
    という処理を書きたいのですが、
    こちらが知りたいのは、Aと紐づいたBの取得方法です。

    1) AとBをグループとして紐づけてるレコードがDB上のどこにあるか

    2) Bのdb上のmeta_idを取得する方法(関数)があるか

    3) meta_idからSQLをupdateする以外に、Bを変更できる方法(関数)があるか

    です。

    多分

    1: wp_postmetasmart-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_metameta_idは取得できません。取得できるのはカスタムフィールドの値だけです。

    Aの値が一致した場合、Bの値を変更する、

    Aが何と一致なのか、どこでどうするのか条件が分からないですが

    $value = get_post_meta( get_the_ID(), 'A', true );
    if( $value === '???' );
    update_post_meta( get_the_ID(), 'B', $value );

    こんな感じになるんじゃないかと思います。

    ・・・SQLでってことなんで何故か投稿全部のカスタムフィールドを更新するのかと思ってしまいました。

    トピック投稿者 csk2018

    (@csk2018)

    お二方、ご助言ありがとうございます。

    おそらく、Manboさんの仰る

    1: wp_postmetaのsmart-cf-setting
    
    2: $wpdb->get_results等でBのmeta_valueを指定して
    
    3: カスタムフィールドを追加や更新する関数は基本的にpost_idの指定が必要なので$wpdb->get_resultsで取ってUPDATEするしか無理たと思う

    というのが、一番方向性近いようです。
    こちらで検証してみます。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「スマートカスタムフィールドのmeta_id」には新たに返信することはできません。