Wordpressを使っており、投稿ページに、「住所(address)」と「緯度(lat)」、「経度(lon)」という3つのカスタムフィールドを作っております。

投稿ページを保存または更新するたび、フックを使い、住所から緯度と経度を取得する仕組みを作っていました。

少し前まで問題なく緯度・経度を取得できていたのですが、いつの間にか取得できなくなっていました。
調べたところ「Google MapのAPIが必要になっていた」というのが原因のようでした。
さっそくAPIを取得し、コードに盛り込んだのですが、以前のように緯度・経度が取得できません。

コードがおかしいのだと思うのですが、問題点を教えていただけませんでしょうか。
ちなみに「functions.php」のコードです。

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2019/06/16 04:14:19
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
id:ykhpno1

カッコ内はそれぞれのフィールド名です。

住所(address)

緯度(lat)

経度(lon)

APIキーはXXXXXXXXXXXXXXXXXと書かせていただいております。

functions.phpのコードです。


add_action('save_post','set_cf_latlng');      
function geocode($address){      
$req ='http://maps.googleapis.com/maps/api/geocode/xml';
$req .='?address='.urlencode($address);      
$req .='&key=XXXXXXXXXXXXXXXXX';
$req .='&sensor=false';      
$xml = simplexml_load_file($req) or die('XML parsing error');
if ($xml->status =='OK') {     
  $loc[0] =  (string)$xml->result->geometry->location->lat;       
  $loc[1] =  (string)$xml->result->geometry->location->lng;       
}      
return $loc;
}     
function set_cf_latlng($postID){      
    if($parent_id = wp_is_post_revision($postID))      
    {      
        $postID = $parent_id;      
    }      
    $address = get_post_meta($postID , 'address',true);      
    if( $address ){      
        $location = geocode($address);      
        if ( !add_post_meta($postID, 'lat', $location[0], true) ) update_post_meta($postID,'lat', $location[0] );      
        if ( !add_post_meta($postID, 'lon', $location[1], true) ) update_post_meta($postID,'lon', $location[1] );      
    }else{      
        delete_post_meta($postID ,'lat');
        delete_post_meta($postID ,'lon'); 
    }      
}


回答1件)

id:Asayuri No.1

回答回数309ベストアンサー獲得回数65

 
https://webservicies.net/googlemaps-api/
 
2018年6月11以降にGoogleMapsAPIを使用する際は
 
必ずAPIキーを発行しなければならず
 
かつ課金アカウントを登録し
 
プロジェクト(APIキー)と紐付けなければなりません
 
とのことです
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

id:ykhpno1

ええ、それは存じ上げております。
回答ありがとうございます。

2019/06/16 04:13:31
  • id:ykhpno1
    ちなみに、今まで使っていたコードは以下となります。


    >|php|

    add_action('save_post','set_cf_latlng');
    function geocode($address){
    $req ='http://maps.google.com/maps/api/geocode/xml';
    $req .='?address='.urlencode($address);
    $req .='&sensor=false';
    $xml = simplexml_load_file($req) or die('XML parsing error');
    if ($xml->status =='OK') {
    $loc[0] = (string)$xml->result->geometry->location->lat;
    $loc[1] = (string)$xml->result->geometry->location->lng;
    }
    return $loc;
    }
    function set_cf_latlng($postID){
    if($parent_id = wp_is_post_revision($postID))
    {
    $postID = $parent_id;
    }
    $address = get_post_meta($postID , 'address',true);
    if( $address ){
    $location = geocode($address);
    if ( !add_post_meta($postID, 'lat', $location[0], true) ) update_post_meta($postID,'lat', $location[0] );
    if ( !add_post_meta($postID, 'lon', $location[1], true) ) update_post_meta($postID,'lon', $location[1] );
    }else{
    delete_post_meta($postID ,'lat');
    delete_post_meta($postID ,'lon');
    }
    }

    ||<

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません