2013-06-26 80 views
0

我收到了一些非常奇怪的結果,試圖拉出所有特色圖片網址的自定義帖子類型。WordPress的網絡wp_get_attachment_url只獲取後循環中的第一個網址

只有第一個URL會被其他人顯示爲空白。我檢查了帖子ID,它確實有價值。縮略圖ID也拉正確。如果我將該值放入硬編碼函數中,它將返回主題頁面中的正確URL。下面是代碼:

global $post; 
       $type = 'slider'; 
       $args=array(
        'post_type' => $type, 
        'post_status' => 'publish', 
        'posts_per_page' => 5); 

       $slider_posts = null; 
       $slider_posts = new WP_Query($args); 
       while ($slider_posts->have_posts()) { 
        $slider_posts->the_post(); 
        $post_id = $post->ID; 
        $thumbnail_id = intval(get_post_thumbnail_id($post_id)); 

        if (has_post_thumbnail()) { 
         $url = wp_get_attachment_url($thumbnail_id); 
         ?> 

        <div class="slide"> 
         <img class="slider_images" src="<?php echo $url; ?>" width="587" height="330" /> 
         <div> 
          <h4><?php the_title(); ?></h4> 
          <p id="spacer">&nbsp;</p> 
          <p><?php the_excerpt(); ?></p> 
          <p><a href="<?php the_permalink(); ?>">Read More...</a></p> 
         </div> 
        </div> 
        <?php 
        } 
       } 
       wp_reset_query(); 

       ?> 
      </div> 

的URL,看看發生了什麼事在這裏: http://template.seniorshomecaregivers.com/

我使用的滑塊的URL。

正如你所看到的,它只是拉第一個URL後,他們都返回空白。

在此先感謝您的幫助。

+0

看起來在網絡設置中wp_get_attachment_url存在問題。它僅在自定義帖子類型的所有帖子循環中調用時纔會獲得第一個url。 –

+0

另外,這只是使用內容過濾器時的一個問題。例如,如果用內容中的值替換內容中的[somevar]。如果沒有內容過濾器,那麼它一切正常。 –

回答

0

對於那些想要解決方案的人來說,當添加或更新自定義帖子時,此代碼會將特色圖片url存儲在帖子元中。然後,您只需要通過發佈ID和元名稱來獲取帖子meta中的url。這消除了獲取縮略圖ID然後url的myrid調用。

function add_slider_posttype() { 
$labels = array(
    'name'    => _x('Slider', 'post type general name'), 
    'singular_name'  => _x('Slider', 'post type singular name'), 
    'add_new'   => _x('Add New', 'book'), 
    'add_new_item'  => __('Add New Slide'), 
    'edit_item'   => __('Edit Slide'), 
    'new_item'   => __('New Slide'), 
    'all_items'   => __('All Slides'), 
    'view_item'   => __('View Slides'), 
    'search_items'  => __('Search Slides'), 
    'not_found'   => __('No slides found'), 
    'not_found_in_trash' => __('No slides found in the Trash'), 
    'parent_item_colon' => '', 
    'menu_name'   => 'Slider' 
); 

$args = array(
    'labels'  => $labels, 
    'description' => 'Holds our slides and slider specific data', 
    'public'  => true, 
    'menu_position' => 25, 
    'supports'  => array('title', 'editor', 'thumbnail', 'excerpt', 'comments'), 
    'has_archive' => true, 
); 

register_post_type('slider', $args); 

} 
add_action('init', 'add_slider_posttype', 0); 

function save_slider_meta($post_id) { 

if(get_post_type($post_id) == "slider"){ 
    $thumbnail_id = get_post_thumbnail_id($post_id); 
    $url = wp_get_attachment_url($thumbnail_id); 

    if (!empty($url)){ 
     update_post_meta($post_id, 'slider_img_url', $url); 
    } 
} 

} 

add_action('save_post', 'save_slider_meta');