Wordpress 循环,将特定 class 添加到第二个 post,第三个,重置,添加 class 等
Wordpress Loop, Add specific class to the 2nd post, 3rd, reset, add class etc
我正在尝试自定义自定义 post 类型并根据 post 的顺序更改输出。我有以下内容,但订单输出工作正常
输出看起来像这样(它在前 3 post 秒后跳过):
- John Doe,Vintage Burbank 8
- John Doe,Vintage Burbank 7 二
- John Doe,Vintage Burbank 6 三
- John Doe,Vintage Burbank 5 二
- John Doe,Vintage Burbank 4
- John Doe,Vintage Burbank 3 三
- John Doe,Vintage Burbank 2
- John Doe,Vintage Burbank 1 两
我希望它是这样出来的:
- John Doe,Vintage Burbank 8
- John Doe,Vintage Burbank 7 二
- John Doe,Vintage Burbank 6 三
- John Doe,Vintage Burbank 5
- John Doe,Vintage Burbank 4 二
- John Doe,Vintage Burbank 3 三
- John Doe,Vintage Burbank 2
John Doe,Vintage Burbank 1 两个
<?php
$args = array(
'post_type' => 'testimonials',
'posts_per_page' => -1
);
$query = query_posts($args);
?>
<?php $i = 1; while (have_posts()) : the_post(); ?>
<?php if($i%3 == 0) : ?>
<?php the_title();?> three
<?php elseif($i%2 == 0) : ?>
<?php the_title();?> two
<?php else : ?>
<?php the_title();?>
<?php endif; ?>
<?php $i++; ?>
<?php endwhile;?>
<?php wp_reset_query(); ?>
为什么到处都用?当你得到匹配时你还需要重置 $i 并且它应该工作。试试这个:
<?php
$args = array(
'post_type' => 'testimonials',
'posts_per_page' => -1
);
$posts = get_posts($args);
$i = 1;
foreach ($posts as $post) {
setup_postdata($post);
if($i%3 == 0) {
echo get_the_title().' three';
$i = 0;
}
elseif($i%2 == 0) {
echo get_the_title().' two';
$i = 0;
}
else {
the_title();
}
$i++;
}
wp_reset_postdata();
?>
好的,我认为你的代码没问题,唯一的问题是你的更新 $i
很糟糕。我已经修改了您的代码,我认为它应该可以工作(如果不能,请告诉我)。
<?php
$args = array(
'post_type' => 'testimonials',
'posts_per_page' => -1
);
$query = query_posts($args);
?>
<?php $i = 1;
while (have_posts()) : the_post(); ?>
<?php if ($i % 3 == 0) : ?>
<?php the_title(); ?> three
<?php elseif ($i % 2 == 0) : ?>
<?php the_title(); ?> two
<?php else : ?>
<?php the_title(); ?>
<?php endif; ?>
<?php /* Comment this line */ ?>
<?php /* $i++; */?>
<?php /* Add this one */ ?>
<?php $i = ($i >= 3) ? 1 : ($i + 1); ?>
<?php endwhile; ?>
<?php wp_reset_query(); ?>
我正在尝试自定义自定义 post 类型并根据 post 的顺序更改输出。我有以下内容,但订单输出工作正常
输出看起来像这样(它在前 3 post 秒后跳过):
- John Doe,Vintage Burbank 8
- John Doe,Vintage Burbank 7 二
- John Doe,Vintage Burbank 6 三
- John Doe,Vintage Burbank 5 二
- John Doe,Vintage Burbank 4
- John Doe,Vintage Burbank 3 三
- John Doe,Vintage Burbank 2
- John Doe,Vintage Burbank 1 两
我希望它是这样出来的:
- John Doe,Vintage Burbank 8
- John Doe,Vintage Burbank 7 二
- John Doe,Vintage Burbank 6 三
- John Doe,Vintage Burbank 5
- John Doe,Vintage Burbank 4 二
- John Doe,Vintage Burbank 3 三
- John Doe,Vintage Burbank 2
John Doe,Vintage Burbank 1 两个
<?php $args = array( 'post_type' => 'testimonials', 'posts_per_page' => -1 ); $query = query_posts($args); ?> <?php $i = 1; while (have_posts()) : the_post(); ?> <?php if($i%3 == 0) : ?> <?php the_title();?> three <?php elseif($i%2 == 0) : ?> <?php the_title();?> two <?php else : ?> <?php the_title();?> <?php endif; ?> <?php $i++; ?> <?php endwhile;?> <?php wp_reset_query(); ?>
为什么到处都用?当你得到匹配时你还需要重置 $i 并且它应该工作。试试这个:
<?php
$args = array(
'post_type' => 'testimonials',
'posts_per_page' => -1
);
$posts = get_posts($args);
$i = 1;
foreach ($posts as $post) {
setup_postdata($post);
if($i%3 == 0) {
echo get_the_title().' three';
$i = 0;
}
elseif($i%2 == 0) {
echo get_the_title().' two';
$i = 0;
}
else {
the_title();
}
$i++;
}
wp_reset_postdata();
?>
好的,我认为你的代码没问题,唯一的问题是你的更新 $i
很糟糕。我已经修改了您的代码,我认为它应该可以工作(如果不能,请告诉我)。
<?php
$args = array(
'post_type' => 'testimonials',
'posts_per_page' => -1
);
$query = query_posts($args);
?>
<?php $i = 1;
while (have_posts()) : the_post(); ?>
<?php if ($i % 3 == 0) : ?>
<?php the_title(); ?> three
<?php elseif ($i % 2 == 0) : ?>
<?php the_title(); ?> two
<?php else : ?>
<?php the_title(); ?>
<?php endif; ?>
<?php /* Comment this line */ ?>
<?php /* $i++; */?>
<?php /* Add this one */ ?>
<?php $i = ($i >= 3) ? 1 : ($i + 1); ?>
<?php endwhile; ?>
<?php wp_reset_query(); ?>