Php 每三次发布后重新运行循环?(Wordpress)
我的模板(wordpress)有问题。 我想创建一个公文包页面,其中包含3列,可以在我的公文包页面中显示帖子(无需跳转新页面)。在第三篇文章之后,我需要重复这三篇文章。我会将“隐藏”类分配给我的重复文章,当点击该列时,类将设置为“块”。 我有一个密码:Php 每三次发布后重新运行循环?(Wordpress),php,wordpress,Php,Wordpress,我的模板(wordpress)有问题。 我想创建一个公文包页面,其中包含3列,可以在我的公文包页面中显示帖子(无需跳转新页面)。在第三篇文章之后,我需要重复这三篇文章。我会将“隐藏”类分配给我的重复文章,当点击该列时,类将设置为“块”。 我有一个密码: <?php get_header(); ?> <section> <div class="container container-bazar container-gallery"><?php $arra
<?php get_header(); ?>
<section> <div class="container container-bazar container-gallery"><?php
$array = array();
$count = 0;
$i = 0;
$args = array(
'posts_per_page' => -1,
'post_type' => 'gallery',
);
$gallery = new WP_Query( $args );
if($gallery->have_posts()) :
while($gallery->have_posts()) :
$gallery->the_post(); ?>
<div class="col-1 boxes<?php if( $count%3 == 0 ) { echo '-1'; }; $count++; ?>">
<div class="post" id="post-<?php the_ID(); ?>">
<figure class="indent-bot">
<a href="<?php the_permalink(); ?>" rel="nofollow">
<?php the_post_thumbnail(array(380,220,true)); ?>
</a>
</figure>
<div class="col-1-content">
<strong class="title-3">
<a href="<?php the_permalink(); ?>" rel="nofollow">
<?php the_title(); ?>
</a>
</strong>
<div class="entry">
<a href="<?php the_permalink(); ?>" rel="nofollow">
<?php the_excerpt(); ?>
</a>
</div><!-- .entry -->
</div><!-- .col-1-content-->
</div><!-- .post -->
</div> <!-- .boxes -->
<?php endwhile; ?>
<?php while($gallery->have_posts()) :
$gallery->the_post();?>
<?php $imgaddr1 = get_post_meta($post->ID, 'imgaddr1', true);
$imgaddr2 = get_post_meta($post->ID, 'imgaddr2', true);
$imgssilka1 = get_post_meta($post->ID, 'imgssilka1', true);
$imgssilka2 = get_post_meta($post->ID, 'imgssilka2', true);
$namecolor1 = get_post_meta($post->ID, 'namecolor1', true);
$namecolor2 = get_post_meta($post->ID, 'namecolor2', true);
$numbercolor1 = get_post_meta($post->ID, 'numbercolor1', true);
$numbercolor2 = get_post_meta($post->ID, 'numbercolor2', true); ?>
</div>
<div class="full clearfix">
<div class="inner">
<figure class="indent-bot1">
<a href="<?php the_permalink(); ?>" rel="nofollow">
<?php the_post_thumbnail(array(960,690)); ?>
</a>
</figure>
<div class="row">
<div class="col-md-5">
<div class="inf-1">
<h4>Информация</h4>
</div>
<div class="inf-2">
<h5><?php the_title(); ?></h5>
<div class="desc">
<?php the_excerpt(); ?>
</div>
</div>
<div class="clearfix"></div>
</div>
<div class="col-md-7 border-left">
<div class="inf-1">
<h4>Приложенные Цвета</h4>
</div>
<div class="inf-2">
<ul>
<li class="first-child">
<a href="<?php echo $imgssilka1; ?>" class="img-block">
<img src="<?php echo $imgaddr1; ?>">
</a>
<div class="txt">
<strong><?php echo $namecolor1; ?></strong>
<span><?php echo $numbercolor1; ?></span>
</div>
</li>
<li class="last-child">
<a href="<?php echo $imgssilka2; ?>" class="img-block">
<img src="<?php echo $imgaddr2; ?>">
</a>
<div class="txt">
<strong><?php echo $namecolor2; ?></strong>
<span><?php echo $numbercolor2; ?></span>
</div>
</li>
</ul>
</div>
<div class="clearfix"></div>
</div>
</div>
</div><!-- .inner -->
</div>
<div class="container container-bazar container-gallery">
<?php endwhile;
else:
endif; ?>
</div><!-- .container -->
</section>
<?php get_footer(); ?>
众所周知,WordPress是一个开源工具,所有插件都可以用来管理这种格式
我建议使用插件来管理您的需求。我已用于格式化输出。$I=1;
$i = 1;
//added before to ensure it gets opened
echo '<div>';
if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) : $wp_query->the_post();
// post stuff...
// if multiple of 3 close div and open a new div
if($i % 3 == 0) {echo '</div><div>';}
$i++; endwhile; endif;
//make sure open div is closed
echo '</div>';
//在之前添加,以确保它被打开
回声';
如果($wp_query->have_posts()):而($wp_query->have_posts()):$wp_query->the_post();
//发布内容。。。
//如果是3的倍数,则关闭div并打开一个新div
如果($i%3==0){echo';}
$i++;结束时;endif;
//确保打开的div已关闭
回声';
这是一个非常不寻常的设置,让我思考。有一种方法不需要重新运行循环
这里是如何
- 您只需要运行一次循环。代替默认循环,我们将从查询中取出posts数组,并通过
foreach
循环运行posts。这就是我们要开始的地方
- 我们需要将内容拆分,这样我们就可以得到两个包含post数据的块,这需要保存到一个数组中,稍后我们将使用该数组。为此,构建两个串联的数据字符串(一个字符串包含第一个数据块,另一个字符串包含第二个数据块),这些字符串将保存在两个单独的变量中
- 完成后,我们需要添加div以形成包含三个post的post块,每个post都有一个唯一的类。这适用于两组字符串
- 现在我们需要计算新的数组键,这样我们就可以构建一个新的post数据数组,这样我们就可以得到一个序列,一个post数据块,其中包含字符串1中的三个post,然后是一个post数据块,其中包含字符串2中相同的三个post,以此类推
- 最后,因为我们的post数组仍然是混合的,并且是无序的,我们将对数组进行排序,使键是数字的,然后我们可以使用最后一个
foreach
循环来输出post数据
这是密码
在我发布代码之前,只需要一两张便条
- 您需要修改类等以满足您的需要
- 代码没有经过充分测试,但div块和排序工作正常
- 我对代码进行了注释,使其更易于理解
最后,代码
$args = array(
'posts_per_page' => -1,
'post_type' => 'gallery',
);
$gallery = new WP_Query( $args );
// Check if we have posts before we continue
if( $gallery->have_posts() ) {
// Use the array of posts and a foreach loop to build out super array
foreach ( $gallery->posts as $key=>$post ) {
// Setup postdata so we can make use of template tags
setup_postdata( $post );
// Setup/define our first variable which will hold our first set of post data
$output = '';
// Open a new div on the first post and every 3rd one there after to hold three posts
if ( $key%3 == 0 ) {
// We will call this class "first-x" where x represents the block count
$output .= '<div class="first-' . floor( $key / 3 ) . '">';
}
// Concatenate your first loop into a string to our first variable $output
$output .= '<div class="post" id="post-' . $post->ID . '">
<figure class="indent-bot">
<a href="' . get_the_permalink() . '" rel="nofollow">
' . get_the_post_thumbnail( $post->ID, array( 380,220,true ) ) . '
</a>
</figure>
<div class="col-1-content">
<strong class="title-3">
<a href="' . get_the_permalink() . '" rel="nofollow">
' . get_the_title() . '
</a>
</strong>
<div class="entry">
<a href="' . get_the_permalink() . '" rel="nofollow">
' . get_the_excerpt() . '
</a>
</div><!-- .entry -->
</div><!-- .col-1-content-->
</div><!-- .post -->
</div> <!-- .boxes -->';
// Add our closing div after every third post or the last post if there is less than three
if ( $key%3 == 2 || !array_key_exists( ( $key + 1 ), $gallery->posts ) ) {
$output .= '</div>';
}
// Create our new array of post data split in two and use with new array keys
$new_posts_array[floor( $key / 3 ) * 3 + $key] = $output;
// Setup/define our second variable which will hold the second set of post data from our posts
// This is the set that you would like to hide
$output_1 = '';
// Open a new div on the first post and every 3rd one there after to hold three posts
if ( ( $key%3 ) == 0 ) {
// This block of posts will use class "second-x" where x represents the block count
$output_1 .= '<div class="second-' . floor( $key / 3 ) . '">';
}
$imgaddr1 = get_post_meta( $post->ID, 'imgaddr1', true );
$imgaddr2 = get_post_meta( $post->ID, 'imgaddr2', true );
$imgssilka1 = get_post_meta( $post->ID, 'imgssilka1', true );
$imgssilka2 = get_post_meta( $post->ID, 'imgssilka2', true );
$namecolor1 = get_post_meta( $post->ID, 'namecolor1', true );
$namecolor2 = get_post_meta( $post->ID, 'namecolor2', true );
$numbercolor1 = get_post_meta( $post->ID, 'numbercolor1', true );
$numbercolor2 = get_post_meta( $post->ID, 'numbercolor2', true );
// Concatenate your second set of post data into a string to our second variable $output_1
$output_1 .= '<div class="full clearfix">
<div class="inner">
<figure class="indent-bot1">
<a href="' . get_the_permalink() . '" rel="nofollow">
' . get_the_post_thumbnail( $post->ID, array( 960, 690 ) ) . '
</a>
</figure>
<div class="row">
<div class="col-md-5">
<div class="inf-1">
<h4>Информация</h4>
</div>
<div class="inf-2">
<h5>' . get_the_title() . '</h5>
<div class="desc">
' . get_the_excerpt() . '
</div>
</div>
<div class="clearfix"></div>
</div>
<div class="col-md-7 border-left">
<div class="inf-1">
<h4>Приложенные Цвета</h4>
</div>
<div class="inf-2">
<ul>
<li class="first-child">
<a href="' . $imgssilka1 . '" class="img-block">
<img src="' . $imgaddr1 . '">
</a>
<div class="txt">
<strong>' . $namecolor1 . '</strong>
<span>' . $numbercolor1 . '</span>
</div>
</li>
<li class="last-child">
<a href="' . $imgssilka2 . '" class="img-block">
<img src="' . $imgaddr2 . '">
</a>
<div class="txt">
<strong>' . $namecolor2 . '</strong>
<span>' . $numbercolor2 . '</span>
</div>
</li>
</ul>
</div>
<div class="clearfix"></div>
</div>
</div>
</div><!-- .inner -->
</div>';
// Add our closing div after every third post or the last post if there is less than three
if ( $key%3 == 2 || !array_key_exists( ( $key + 1 ), $gallery->posts ) ) {
$output_1 .= '</div>';
}
// Create our new array of post data split in two and use with new array keys
$new_posts_array[( floor( $key / 3 ) + 1 ) * 3 + $key] = $output_1;
}
wp_reset_postdata();
// Sort our new array so that the keys are numerical again
ksort( $new_posts_array );
// Run a foreach loop to output our posts as we need. No need to modify anything here
foreach ( $new_posts_array as $v )
echo $v;
}
$args=array(
“每页帖子数”=>-1,
“post_type”=>“gallery”,
);
$gallery=新的WP\u查询($args);
//继续之前,请检查是否有帖子
如果($gallery->have_posts()){
//使用post数组和foreach循环构建超级数组
foreach($gallery->posts as$key=>$post){
//设置postdata以便我们可以使用模板标记
设置_postdata($post);
//设置/定义保存第一组post数据的第一个变量
$output='';
//在第一个岗位上开设一个新的部门,然后每隔第三个岗位开设一个部门,以担任三个岗位
如果($key%3==0){
//我们将这个类称为“first-x”,其中x表示块计数
$output.='';
}
//将您的第一个循环连接成一个字符串,并连接到我们的第一个变量$output
$output.='
';
//在每三篇文章或最后一篇文章(如果少于三篇)之后添加我们的结束div
如果($key%3==2 | |!数组| key_存在($key+1),$gallery->posts)){
$output.='';
}
//创建新的post数据数组,将其一分为二,并与新数组键一起使用
$new_posts_数组[楼层($key/3)*3+$key]=$output;
//设置/定义第二个变量,该变量将保存来自我们帖子的第二组帖子数据
//这是您要隐藏的集
$output_1='';
//在第一个岗位上开设一个新的部门,然后每隔第三个岗位开设一个部门,以担任三个岗位
如果(($key%3)==0){
//这个帖子块将使用类“second-x”,其中x表示块数
$output_1.='';
}
$imgaddr1=get\u post\u meta($post->ID,'imgaddr1',true);
$imgaddr2=get\u post\u meta($post->ID,'imgaddr2',true);
$imgssilka1=get\u post\u meta($post->ID,'imgssilka1',true);
$imgssilka2=get\u post\u meta($post->ID,'imgssilka2',true);
$namecolor1=get\u post\u meta($post->ID,'namecolor1',true);
$namecolor2=get\u post\u meta($post->ID,'namecolor2',true);
$numbercolor1=get\u post\u meta($post->ID,'numbercolor1',true);
$numbercolor2=get\u post\u meta($post->ID,'numbercolor2',true);
//将第二组post数据连接到第二个变量$output_1的字符串中
$output_1.='
Информация
“.获取标题()
“.获取摘录()
Приложенные Цвета
<section>
<div class="container container-gallery">
<?php
$offset = 0;
$offset1 = 0;
$i =0;
$count = 0;
$reset =0;
$reset1 = 0;
$args = array(
'posts_per_page' => -1,
'post_type' => 'gallery',
);
$gallery = new WP_Query( $args );
$numberposts = $gallery->post_count;
if ($numberposts){
$id1=0;
$id2=0;
while($count < $numberposts){
// print_r($arr1);
$count++;
//echo "<h2>".$count."</h2>";
$arr1 = array(
'posts_per_page' => 400,
'post_type' => 'gallery',
'offset'=>$offset
);
$arr2 = array(
'posts_per_page' => 400,
'post_type' => 'gallery',
'offset'=>$offset1
);
$loop1 = new WP_Query($arr1);
$loop2 = new WP_Query($arr1);
while($loop1->have_posts()) : $loop1->the_post();
if ($reset<3) :
$reset++;
?>
<?php
$colorfilter1 = get_post_meta($post->ID, 'checkboxwhite', true);
$colorfilter2 = get_post_meta($post->ID, 'checkbox_beige', true);
$colorfilter3 = get_post_meta($post->ID, 'checkbox_brown', true);
$colorfilter4 = get_post_meta($post->ID, 'checkbox_gray', true);
$colorfilter5 = get_post_meta($post->ID, 'checkbox_black', true);
$colorfilter6 = get_post_meta($post->ID, 'checkbox_vvid', true);
if ($colorfilter1 != "") $colorfilter1 ="white ";
if ($colorfilter2 != "") $colorfilter2 ="beige ";
if ($colorfilter3 != "") $colorfilter3 ="brown ";
if ($colorfilter4 != "") $colorfilter4 ="gray ";
if ($colorfilter5 != "") $colorfilter5 ="black ";
if ($colorfilter6 != "") $colorfilter6 ="vivid ";
$class_color = $colorfilter1.$colorfilter2.$colorfilter3.$colorfilter4.$colorfilter5.$colorfilter6;
?>
<div class="col-1 mcol boxes<?php if( $i%3 == 0 ) { echo '-1'; }; $i++; echo ' '.$class_color;?>" id="colbox<?php echo $id1; $id1++;?>" data-id="click" >
<div class="post" id="post-<?php the_ID(); ?>">
<figure class="indent-bot">
<?php the_post_thumbnail(array(380,220,true)); ?>
</figure>
<div class="col-1-content">
<strong class="title-3">
<?php the_title(); ?>
</strong>
<div class="entry">
<?php the_excerpt(); ?>
</div><!-- .entry -->
</div><!-- .col-1-content-->
</div><!-- .post -->
</div><!-- .boxes -->
<?php else : break;?>
<?php endif; ?>
<?php endwhile; ?>
<?php
$reset = 0;
$offset +=3;
?>
<?php wp_reset_postdata(); ?>
<?php
while($loop2->have_posts()) : $loop2->the_post();
if ($reset1<3) :
$reset1++;
?>
<?php
$numbercolor1 = get_post_meta($post->ID, 'numbercolor1',true);
$numbercolor2 = get_post_meta($post->ID, 'numbercolor2', true);
$imgaddr1 = get_post_meta($post->ID, 'imgaddr1', true);
$imgaddr2 = get_post_meta($post->ID, 'imgaddr2', true);
$imgssilka1 = get_post_meta($post->ID, 'imgssilka1', true);
$imgssilka2 = get_post_meta($post->ID, 'imgssilka2', true);
$namecolor1 = get_post_meta($post->ID, 'namecolor1', true);
$namecolor2 = get_post_meta($post->ID, 'namecolor2', true);
?>
</div>
<div class="full clearfix active colbox<?php echo $id2; $id2++;?>" id="">
<div class="inner">
<figure class="indent-bot1">
<a href="<?php the_permalink(); ?>" rel="nofollow">
<?php the_post_thumbnail(array(960,690)); ?>
</a>
</figure>
<div class="row">
<div class="col-md-5">
<div class="inf-1">
<h4>Информация</h4>
</div>
<div class="inf-2">
<h5><?php the_title(); ?></h5>
<div class="desc">
<?php the_excerpt(); ?>
</div>
</div>
<div class="clearfix"></div>
</div>
<div class="col-md-7 border-left">
<div class="inf-1">
<h4>Приложенные<</h4>
</div>
<div class="inf-2">
<ul>
<li class="first-child">
<a href="<?php echo $imgssilka1; ?>" class="img-block">
<img src="<?php echo $imgaddr1; ?>">
</a>
<div class="txt">
<strong><?php echo $namecolor1; ?></strong>
<span><?php echo $numbercolor1; ?></span>
</div>
</li>
<li class="last-child">
<a href="<?php echo $imgssilka2; ?>" class="img-block">
<img src="<?php echo $imgaddr2; ?>">
</a>
<div class="txt">
<strong><?php echo $namecolor2; ?></strong>
<span><?php echo $numbercolor2; ?></span>
</div>
</li>
</ul>
</div>
<div class="clearfix"></div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="c_btn"></div>
</div>
</div>
</div><!-- .inner -->
</div>
<div class="container container-gallery">
<?php else : break;?>
<?php endif; ?>
<?php endwhile; ?>
<?php
$reset1 = 0;
$offset1 +=3;
?>
<?php wp_reset_postdata(); ?>
<?php
} //end if ($count <= $numberposts)
} //end if ($numberposts)
?>
<?php
if ( have_posts() ) while ( have_posts() ) : the_post(); // старт цикла ?>
<article id="post-<?php the_ID(); ?>">
<?php the_content(); ?>
</article>
<?php endwhile; ?>
</div><!-- .container -->
</section>