0

尝试为自定义帖子类型提取所有特色图像 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,之后它们都返回空白。

在此先感谢您的帮助。

4

1 回答 1

0

对于那些想要解决方案的人,此代码将在添加或更新自定义帖子时将特色图像 url 存储在帖子元中。然后,您只需要通过帖子 ID 和元名称循环从帖子元中获取 url。这消除了获取缩略图 id 和 url 的无数调用。

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');
于 2013-06-27T16:07:41.957 回答