2016-02-27 1 views
1

Я пытаюсь получить URL-адрес отображаемого изображения после публикации публикации, но каким-то образом он возвращает пустой URL-адрес.Получите признанный URL-адрес изображения после публикации

Но если я должен был получить post_title, все в порядке.

function update_google_map($post_id) { 

    // If this is just a revision, don't send the email. 


    global $wpdb; 

    if (wp_is_post_revision($post_id)) 
     return; 

    $post_title = get_the_title($post_id); 

    $post_content1 = get_post_field('post_content', $post_id); 
    $post_content = substr($post_content1, 0, 150); 

    $post_url = get_permalink($post_id); 

    $feat_image_url = wp_get_attachment_url(get_post_thumbnail_id($post_id)); 

    $google_location = get_post_meta($post_id, 'g_location', $single = true); 

    $google_loc = explode(",", $google_location); 

    $chk_result = $wpdb->get_results("SELECT post_id FROM wp_wpgmza WHERE post_id = '" . $post_id . "'"); 

    if (count($chk_result) > 0) { 
     $wpdb->update(
       'wp_wpgmza', array(
      'description' => $post_content, 
      'pic' => $feat_image_url, 
      'link' => $post_url, 
      'lat' => $google_loc[0], 
      'lng' => $google_loc[1], 
      'title' => $post_title, 
      'map_id' => 1 
       ), array('post_id' => $post_id), array(
      '%s', 
      '%s', 
      '%s', 
      '%s', 
      '%s', 
      '%s', 
      '%d' 
       ) 
     ); 
    } else { 
     $wpdb->query("INSERT INTO wp_wpgmza (post_id, map_id, description, pic, link, lat,lng, anim, title, infoopen) " 
      . "VALUES ('" . $post_id . "', 1, '" . $post_content . "', '" . $feat_image_url . "', '" . $post_url . "', '" . $google_loc[0] . "', '" . $google_loc[1] . "', 0, '" . $post_title . "', 0)"); 
    } 

} 

add_action('publish_post', 'update_google_map', 50); 

Если бы я должен был обновить этот же пост с save_post крючком

add_action('save_post', 'update_map', 50); 

в редакторе Wordpress после публикации, я могу получить признаки URL изображения снова. То же самое относится и к $ google_location. Он также пуст, когда пытается извлечь из таблицы postmeta.

Я ничего не пропустил?

+0

Я думаю, что причина потому что сразу после публикации URL-адрес графического изображения еще не готов. Почему-то я должен найти другой способ получить его. Любые предложения о том, как я могу это сделать? –

ответ

0

Пожалуйста, замените этот код, который вы использовали и чек у вас есть художественный образ, как publish_post

function update_map($post_id) { 

    global $wpdb; 

    $thumbnail_id = get_post_thumbnail_id($post_id); 
    $url = wp_get_attachment_url($thumbnail_id); 

    if ($url != '') { 
     wp_mail('[email protected]', 'Yes', 'Yes'); 
    } 

    wp_mail('[email protected]', 'No', 'No'); 
} 

add_action('publish_post', 'update_map', 50); 

Поскольку $url не является массивом, это строка, так что вы не можете использовать !empty

+0

Я работаю над этим целым утром, и я знаю, что это не из-за этого. –

+0

добавить этот код в свой файл? –

+0

это не проблема, я уверен. –

Смежные вопросы