我在档案模板中查询自定义帖子类型。每个帖子都附有元值。循环确实列出了每个帖子,但每个帖子的元值都是从第一篇文章中提取的。所以,我有一个帖子列表,所有的元数值都是一样的,数据保存在第一篇文章中。数据正确保存在数据库中。这是我的循环:
$current_time = current_time('mysql');
list( $today_year, $today_month, $today_day, $hour, $minute, $second ) = split( '([^0-9])', $current_time );
$current_timestamp = $today_year . $today_month . $today_day . $hour . $minute;
$args = array( 'post_type' => 'event',
'order' => 'ASC',
'orderby' => 'meta_value_num',
'posts_per_page' => 20,
'meta_key' => '_start_eventtimestamp',
'meta_query' => array(
array(
'key' => '_start_eventtimestamp',
'value' => $current_timestamp,
'compare' => '>'
)
)
);
// Gets the event start month from the meta field
$month = get_post_meta( $post->ID, '_start_month', true );
// Converts the month number to the month name
//$month = $wp_locale->get_month_abbrev( $wp_locale->get_month( $month ) );
// Gets the event start day
$day = get_post_meta( $post->ID, '_start_day', true );
// Gets the event start year
$year = get_post_meta( $post->ID, '_start_year', true );
$numdays = get_post_meta( $post->ID, '_tour_numdays', true );
$price = get_post_meta( $post->ID, '_tour_price', true );
query_posts( $args );
while (have_posts() ) : the_post();
echo '<ul>';
echo '<li>' . $month . '/' . $day .'</li>';
echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
echo '<li>' . $numdays . '</li>';
echo '<li>' . $price . '</li>';
echo '<li><a href="#">Join this Trip</a></li>';
echo '</ul>';
endwhile;
我找不到解决方案。我尝试将查询从WP_Query
更改为query_posts
,但仍然没有运气。
答案 0 :(得分:2)
这是你的逻辑:
Get Post Metas ($price, $month, etc.)
Query Post (retuned an array of posts)
Begin looping the array of posts
Echo the results, including Post Metas ($price etc) which is NOT the metas of each post
End loop
您需要在循环中使用get_post_meta()
来获取每个帖子的元数据。
你现在正在做:
$month = get_post_meta( $post->ID, '_start_month', true );
... $ post-&gt; ID 不每个帖子的ID,只有第一个。
以下是while()应该是什么样子的样本(我最好不要提供一个精确的样本,因为我可能会错过一些可能会增加混乱的内容):
while (have_posts() ) : the_post();
$month = get_post_meta( $post->ID, '_start_month', true ); // here it is
// $day = ... continue here
echo '<ul>';
echo '<li>' . $month . '/' . $day .'</li>';
echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
echo '<li>' . $numdays . '</li>';
echo '<li>' . $price . '</li>';
echo '<li><a href="#">Join this Trip</a></li>';
echo '</ul>';
endwhile;