WordPress在一个循环中查询并显示两个自定义帖子类型

时间:2013-02-09 22:34:46

标签: php wordpress

我创建了两种自定义帖子类型,每种类型都有几个类别。我需要运行一个查询,在我的标记的不同部分返回两种帖子类型的结果(“问题”,“解决方案”)。我不能在不重写大量jquery的情况下改变我的标记,这取决于每个“tip”的ID。我尝试了各种循环但没有成功。有人可以给我一些见解吗? WordPress循环如下:

<?php get_header(); ?>

<?php 
$args = array(
    'post_type' => array('problems', 'solutions'),
    'tax_query' => array(
        array(
            'taxonomy' => 'category',
            'field' => 'slug',
            'terms' => array('my-category')
        )
    )
);
$loop = new WP_Query( $args );
    $tipID = array('tip-1','tip2','tip-3','tip-4','tip-5');
$tipID_count = count($tipID);
$tipID_index = 0;
while($loop->have_posts()) : $loop->the_post();
?>

<div class="tooltip" <?php $k = $tipID_index % $tipID_count; echo "id=#$tipID[$k]"; $tipID_index++; ?>>
    <dl>
        <dt><a href="" class="imageText">1</a></dt>
<!--///////problems\\\\\\\-->
            <dd class="problem">
                <span class="close pull_right"><a href="" class="imageText">close</a></span>
                    ...do stuff
                <div class="tip-foot"></div>
            </dd>
<!--///////solutions\\\\\\\-->
            <dd class="solution">
                <span class="close pull_right"><a href="" class="imageText">close</a></span>
                    ...do stuff
                <div class="tip-foot"></div>
            </dd>

        </dl>
    </div>

<?php endwhile; ?>

1 个答案:

答案 0 :(得分:0)

你可以创建两个数组,一个$ problems_arr和一个$ solutions_arr,并将问题post id放在问题数组中,解决方案在解决方案数组中发布id。

此代码未经测试,但这是一个示例:

$problems_arr = array();
$solutions_arr = array();
while($loop->have_posts()) : $loop->the_post();
    if(get_post_type() == 'problems')
       array_push($problems_arr, get_the_ID());
    else
       array_push($solutions_arr, get_the_ID());
endwhile;
for(i = 0; i<count($problems_arr); i++){
?>
   <div class="tooltip" <?php $k = $tipID_index % $tipID_count; echo "id=#$tipID[$k]"; $tipID_index++; ?>>

您可以使用帖子ID显示帖子的内容,例如:

echo apply_filters('the_content',get_post_field('post_content',$ problems_arr [i]))

您不希望将帖子内容保存在数组中,因为它会占用大量内存,因此只需存储帖子ID。