• 解決済 igawan

    (@igawan)


    いつもお世話になっております。
    下記ページを参考に外部PHPからカスタムフィールドに値を入れる方法を試しています。
    ACFを使用しているのですが、Googleマップの値を管理画面外から入れる方法が分かりません。Googleマップ以外のカスタムフィールドでは値を渡せることができました。
    http://blog.ale-cole.com/php/wordpress/69/

    記述内容

    $post_value = array(
        'post_author' => 1,// 投稿者のID。
        'post_title' => 'テストタイトル',// 投稿のタイトル。
        'post_content' => 'テスト本文', // 投稿の本文。
        'post_category' => array(1,5), // カテゴリーID(配列)。
        'tags_input' => array('タグ1′,'タグ2′), // タグの名前(配列)。
        'post_status' => 'publish' // 公開ステータス。
    );
    $insert_id = wp_insert_post($post_value); //$insert_idには投稿のID(「wp_posts」テーブルの「ID」)が入る。 投稿に失敗した場合は0が返る。
    
    if($insert_id) {
        update_post_meta($insert_id, 'googlemap′, '東京都新宿区′); // キーが「key1」のカスタムフィールドの値に「カスタム1」を投稿
    
        /* 投稿に成功した時の処理等を記述 */
    } else {
        /* 投稿に失敗した時の処理等を記述 */
    }

    下記の部分「東京都新宿区」を入れるとmysqlには保存されているようなのですが、
    管理画面で見た際には反映されていません。
    update_post_meta($insert_id, 'googlemap′, '東京都新宿区′);

    一旦管理画面側から住所を入れてみるとデータベースには下記のような値が入っています。
    a:3:{s:7:"address";s:64:"233-235 Arden St, North Melbourne VIC 3051 オーストラリア";s:3:"lat";s:18:"-37.80137496425285";s:3:"lng";s:17:"144.9389362335205";}

    試しに値を下記のようにしましたが、反映され内容ず行き詰まってしまいました。
    a:3:{s:7:"address";s:64:"東京都新宿区";s:3:"lat";s:18:"";s:3:"lng";s:17:"";}

    ヒントや解決策がわかりましたらご教示頂ければ幸いです。
    よろしくお願いいたします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    データベースに保存されているデータは、配列をシリアライズされたデータになります。
    データベース上のデータは基本的に文字列、もしくはバイナリデータであって、配列のデータをそのまま保存することができません。そのため、配列データを文字列として符号化させたものがシリアライズデータとなります。

    update_post_meta
    は、保存する値に配列を指定すると、自動的にシリアライズされて保存されるようになっています。

    管理画面から、保存したデータは連想配列で

    array(
    'address' => '233-235 Arden St, North Melbourne VIC 3051 オーストラリア',
    'lat' => '-37.80137496425285',
    'lng' => '144.9389362335205',
    );

    というデータになっています。

    同様のデータを、提供すれば適合するデータとして挿入されるはずです。
    ※ 住所から、緯度経度を求めるには、Google Maps Geocoding API など用いる必要があると思いますが。

    トピック投稿者 igawan

    (@igawan)

    いつもありがとうございます!
    無事できました。
    緯度経度がないとやはりうまく動作しないようなのでなんとかやってみます。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「Advanced Custom FieldsのGoogleマップのフィールドに管理画面外から値を入れたい」には新たに返信することはできません。