我得到了一些非常奇怪的结果,试图将所有特色图片网址拉为自定义帖子类型。
只会拔出第一个网址,其他所有网址都显示为空白。我检查了帖子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"> </p>
<p><?php the_excerpt(); ?></p>
<p><a href="<?php the_permalink(); ?>">Read More...</a></p>
</div>
</div>
<?php
}
}
wp_reset_query();
?>
</div>
要查看正在发生的事情的网址如下: http://template.seniorshomecaregivers.com/
我正在使用滑块中的网址。
正如你所看到的那样,它只会拉出第一个网址,然后它们都会返回空白。
提前感谢您的帮助。
答案 0 :(得分:0)
对于那些想要解决方案的人来说,当添加或更新自定义帖子时,此代码会将特色图片网址存储在post meta中。然后,您只需要通过post id和meta name在循环中获取post meta中的url。这消除了获取缩略图ID然后是网址的调用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');