2014-03-14 53 views
0

我已經寫了一個函數,以採取一些自定義分類標準&在這種情況下(街道(職位名稱),城市,州,郵編)的郵政標題,並將它們地理編碼到緯度/長時間保存到自定義字段_ct_latlng自定義字段不更新後發佈WordPress

問題是它沒有發佈後保存或更新。任何幫助表示讚賞!

function ct_geocode_address($post_id) { 
    global $post; 
    if($_POST['post_type'] != 'listings') 
     return; 

    $city = wp_get_post_terms($post_id, 'city'); 
    $city = $city[0]; 
    $city = $city->name; 
    $state = wp_get_post_terms($post_id, 'state'); 
    $state = $state[0]; 
    $state = $state->name; 
    $zip = wp_get_post_terms($post_id, 'zipcode'); 
    $zip = $zip[0]; 
    $zip = $zip->name; 
    $street = get_the_title($post_id); 

    if($street && $city) { 
     global $post; 
     $url = "http://maps.googleapis.com/maps/api/geocode/json?address=".urlencode($street.' '.$city.', '.$state.' '.$zip)."&sensor=false"; 
     $resp = wp_remote_get($url); 
     if (200 == $resp['response']['code']) { 
      $body = $resp['body']; 
      $data = json_decode($body); 
      if($data->status=="OK"){ 
       $latitude = $data->results[0]->geometry->location->lat; 
       $longitude = $data->results[0]->geometry->location->lng; 
       print $latitude.','.$longitude; 
       update_post_meta($post_id, "_ct_latlng", $latitude.','.$longitude); 
      } 
     } 
    } 
} 
add_action('save_post', 'ct_geocode_address'); 

回答

0

嘗試更換

if($_POST['post_type'] != 'listings') 

$post = get_post($post_id); 
if($post->post_type != 'listings') 

UPDATE:

的問題是,你對10

默認的優先級運行的 ct_geocode_address功能

您在主題中的其他位置有代碼,用於更新手動輸入到列表的元框中的值。手動輸入的值將覆蓋通過ct_geocode_address()設置的值。這意味着該字段正在保存,但之後會基於從edit.php發送的$ _POST值再次保存。

變化

add_action('save_post', 'ct_geocode_address'); 

add_action('save_post', 'ct_geocode_address', 999); 

,將工作。

+0

試過,相同的結果與緯度/經度上更新或新的職位填補自定義字段。 – contempoinc

+0

您是通過標準編輯屏幕還是通過wp_update_post()更新帖子? – Pippin

+0

通過標準編輯屏幕。 – contempoinc

0

自定義文章類型slu tend往往是單數 - 也許這只是一個錯字絆倒你?嘗試針對listing(單數)而不是listings(複數)進行測試。當然,這取決於你如何定義CPT。

此外,請嘗試使用get_post_type()函數進行測試。

if(get_post_type($post_id) != 'listing')

+0

謝謝,但它絕對上市。 – contempoinc

0
$lan = $latitude.','.$longitude; 
update_post_meta($post_id, "_ct_latlng", $lan); 
+0

不幸的是, – contempoinc

相關問題