1

アーカイブテンプレートでカスタム投稿タイプをクエリしています。各投稿にはメタ値が添付されています。ループは各投稿を一覧表示しますが、各投稿のメタ値は最初の投稿から取得されます。だから、私は投稿のリストを持っていて、すべてのメタ値は同じで、データは最初の投稿に保存されています。データはデータベースに適切に保存されます。これが私のループです:

$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たが、それでもうまくいきません。

4

1 に答える 1

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-> 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;
于 2013-02-05T03:37:27.523 に答える