2013-09-06 3 views
0

У меня есть сценарий, который позволяет мне загружать изображение в wordpress с переднего конца. Затем мне нужно отправить файл в post_meta. Сейчас он работает нормально, но я в конечном итоге с идентификатором вложения и нуждаюсь в LINK к файлу.Получение URL-адреса вложений вместо ID (Wordpress)

Код, обрабатывающий данную функцию.

if ($_FILES) { 
    foreach ($_FILES as $k => $v) { 
     if ($k != 'poster_has_paid' && $k != 'featured_image') { 
      if ($_FILES[$k]) { 
       wpo_poster_insert_attachment($k, $post_id, false, $k); 
      } 
     } 
    } 
} 

А вот функция wpo_poster_insert_attachment

function wpo_poster_insert_attachment($file_handler, $post_id, $setthumb = 'false', $post_meta = '') { 
    // check to make sure its a successful upload 
    if ($_FILES[$file_handler]['error'] !== UPLOAD_ERR_OK) { 
     __return_false(); 
    } 

    require_once(ABSPATH . "wp-admin" . '/includes/image.php'); 
    require_once(ABSPATH . "wp-admin" . '/includes/file.php'); 
    require_once(ABSPATH . "wp-admin" . '/includes/media.php'); 

    $attach_id = media_handle_upload($file_handler, $post_id); 

    if ($setthumb) { 
     update_post_meta($post_id, '_thumbnail_id', $attach_id); 
    } 
    if (!$setthumb && $post_meta != '') { 
     update_post_meta($post_id, $post_meta, $attach_id); 
    } 

    return $attach_id; 

Опять же, это обновление поля с attach_id, и я хотел бы, чтобы обновлять attach_url

PS Славлю когда У меня достаточно сообщений, чтобы сделать это. Заранее спасибо.

ответ

0

Что-то, как это должно работать

function wpo_poster_insert_attachment($file_handler,$post_id,$setthumb='false', $post_meta = '') { 
    // check to make sure its a successful upload 
    if ($_FILES[$file_handler]['error'] !== UPLOAD_ERR_OK) __return_false(); 

    require_once(ABSPATH . "wp-admin" . '/includes/image.php'); 
    require_once(ABSPATH . "wp-admin" . '/includes/file.php'); 
    require_once(ABSPATH . "wp-admin" . '/includes/media.php'); 

    $attach_id = media_handle_upload($file_handler, $post_id); 

    if ($setthumb) { 
     update_post_meta($post_id,'_thumbnail_id',$attach_id); 

     // Get the attachment/thumbnail source, and add it to the post meta as well. 
     $src = wp_get_attachment_image_src($thumbnail_id, 'full'); 
     update_post_meta($post_id,'_thumbnail_src', @$src[0]); 
    } 

    if(!$setthumb && $post_meta!=''){ 
     update_post_meta($post_id, $post_meta, $attach_id); 
    } 

    return $attach_id; 
} 

Но, как правило, так как у вас уже есть thumbnail_id, хранящийся в почтовой мете, вы можете вытащить источник крепления во время выполнения:

if($thumbnail_id = get_post_meta($post->ID, '_thumbnail_id', true)) { 
    $attachment_size = 'full'; 
    $src = wp_get_attachment_image_src($thumbnail_id, $attachment_size); 
    if(!$src) { 
      $src = array('http://mysite.com/path/to/default-image.png', 640, 480); 
    } 
    echo '<img src="'.esc_url($src[0]).'" alt="" />'; 
} 
Смежные вопросы