交替查询多种Wordpress帖子类型

问题描述 投票:1回答:1

我写了一个WP Query以在一个列表中显示多种帖子类型的帖子。

它工作正常,但顺序不正确。我想交替加载帖子。见下文:

function carousel_acties_arrangementen() {
ob_start();
$currentID = get_the_ID();
$args = array(
    'post_type' => array('actie', 'arrangement'),
    'posts_per_page' => '6',
    'order' => 'ASC',
    'orderby' => 'meta_value',
    'post__not_in' => array($currentID),
);


$acties_arrangementen = new WP_Query($args);
?>

<?php if ($acties_arrangementen->have_posts()) : ?>
<?php $teller = 0; ?>

<div dir="rtl" class="carousel_cards acties_arrangementen">
    <?php while ($acties_arrangementen->have_posts()) : $acties_arrangementen->the_post(); $fields = (object) get_fields(); ?>

    <!-- Make variables -->
    <?php $afbeelding = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), "large" ); ?>
    <?php $post_type = get_post_type( $post->ID ); ?>

        <div style="
        <?php if ($post_type == 'actie') { ?>           
            background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.0), rgba(53, 123, 183, 0.9)),
        <?php }
        else { ?>
            background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.0), rgba(234, 107, 53, 0.9)),    
        <?php } ?>

        url(<?php echo $afbeelding[0]; ?>);background-repeat:no-repeat;background-size:cover;">

            <a class="link" src="<?php the_permalink(); ?>">
                <div dir="ltr" class="content_slide">
                    <p class="post_type"><?php echo $post_type; echo $teller; ?></p>
                    <h3><?php the_title(); ?></h3>
                    <div class="knop_link">
                        <span class="bekijken">Bekijken<span class="underline"></span></span><span class="icoon"></span>
                    </div>
                </div>
            </a>
        </div>
    <?php $teller++ ?>

    <?php endwhile; wp_reset_postdata(); ?>
</div>
<?php endif; ?>
<?php
return ob_get_clean();
}
add_shortcode('acties_arrangementen', 'carousel_acties_arrangementen');

但是现在它显示了这样的列表:

Post 1 (post_type = actie)
Post 2 (post_type = actie)
Post 3 (post_type = actie)
Post 4 (post_type = arrangement)
Post 5 (post_type = arrangement)
Post 6 (post_type = arrangement)

我希望它显示如下:

Post 1 (post_type = actie)
Post 2 (post_type = arrangement)
Post 3 (post_type = actie)
Post 4 (post_type = arrangement)
Post 5 (post_type = actie)
Post 6 (post_type = arrangement)

有人可以向我解释如何解决此问题吗?

我想我必须对$teller做些事情

php wordpress post custom-post-type
1个回答
0
投票

好吧,我不会在这里编写整个HTML,只是给您外部结构:

function carousel_acties_arrangementen() {
    ob_start();
    $currentID = get_the_ID();
    $args = array(
        'post_type' => array('actie', 'arrangement'),
        'posts_per_page' => '6',
        'order' => 'ASC',
        'orderby' => 'meta_value',
        'post__not_in' => array($currentID),
    );


    $acties_arrangementen = new WP_Query($args);
?>

    <?php if ($acties_arrangementen->have_posts()) : ?>
        <?php 

            list($actiePost,$arrangementPost) = array_chunk($acties_arrangementen->the_post(),3);
        ?>

        <?php foreach($actiePost as $key=>$value){?>

            <div>
                actie post data
            </div>
            <?php if(isset($arrangementPost[$key])){?>
                <div>
                    arrangement post data
                </div>
            <?php } ?>
        <?php } ?>
    <?php endif; ?>
<?php
return ob_get_clean();
}
add_shortcode('acties_arrangementen', 'carousel_acties_arrangementen');
© www.soinside.com 2019 - 2024. All rights reserved.