Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP循环-在每三个项目周围添加一个Div_Php_Wordpress_Loops - Fatal编程技术网

PHP循环-在每三个项目周围添加一个Div

PHP循环-在每三个项目周围添加一个Div,php,wordpress,loops,Php,Wordpress,Loops,这是适用于3个项目的代码,如果3个项目有精确的倍数(即,如果我们有9个项目),那么它将在末尾添加一个额外的空白div 如果有项目不是3的倍数(即,如果我们有8个项目),那么它可以正常工作。我不是程序员 因此,任何帮助都将不胜感激: 下面是代码示例: <div class="row"> <?php $i = 1; $wp_query = new WP_Query( array( 'posts_per_page' => -1,

这是适用于3个项目的代码,如果3个项目有精确的倍数(即,如果我们有9个项目),那么它将在末尾添加一个额外的空白div

如果有项目不是3的倍数(即,如果我们有8个项目),那么它可以正常工作。我不是程序员

因此,任何帮助都将不胜感激:

下面是代码示例:

<div class="row">
    <?php 
       $i = 1;
       $wp_query = new WP_Query( array( 'posts_per_page' => -1, 
                  'post_type' => 'projects' ) );
      echo '<div class="panel">';
      if ( $wp_query->have_posts() ) : 
         while ( $wp_query->have_posts() ) : $wp_query->the_post();
         the_title();         
       if($i % 3 == 0) { echo '</div><div class="panel">'; }
     $i++; 
      endwhile; endif;
     echo '</div>';    
  ?>

</div>

如果不是3的倍数,可以在循环结束后添加
div

<div class="row">
<?php 
    $i = 1;
    $wp_query = new WP_Query( array( 'posts_per_page' => -1, 
        'post_type' => 'projects' ) );
    echo '<div class="panel">';

    if ( $wp_query->have_posts() ) : 
        while ( $wp_query->have_posts() ) :
            $wp_query->the_post();
            the_title();         
            if($i % 3 == 0) { echo '</div><div class="panel">'; }
            $i++; 
        endwhile;
    endif;
    if($i % 3 != 0) { echo '</div><div class="panel">'; }
    echo '</div>';
?>
</div>

如果不是3的倍数,可以在循环结束后添加
div

<div class="row">
<?php 
    $i = 1;
    $wp_query = new WP_Query( array( 'posts_per_page' => -1, 
        'post_type' => 'projects' ) );
    echo '<div class="panel">';

    if ( $wp_query->have_posts() ) : 
        while ( $wp_query->have_posts() ) :
            $wp_query->the_post();
            the_title();         
            if($i % 3 == 0) { echo '</div><div class="panel">'; }
            $i++; 
        endwhile;
    endif;
    if($i % 3 != 0) { echo '</div><div class="panel">'; }
    echo '</div>';
?>
</div>

解决这个问题的方法有很多,这里有一种:

<div class="row">
<?php 

  echo '<div class="panel">';
  $i = 0;
  $wp_query = new WP_Query(array('posts_per_page' => -1, 
                                 'post_type'      => 'projects'));
  if ($wp_query->have_posts()) { 
    while ($wp_query->have_posts()) {
      if($i % 3 == 0)
      {
        if ($i > 0) echo '</div>';
        echo '<div class="panel">';
      }
      $wp_query->the_post();
      the_title();         
      $i++; 
    }
    echo '</div>';    
  } 

?>
</div>


我还清理了代码,消除了没有帖子时出现的错误。

解决这个问题的方法有很多,这里有一个:

<div class="row">
<?php 

  echo '<div class="panel">';
  $i = 0;
  $wp_query = new WP_Query(array('posts_per_page' => -1, 
                                 'post_type'      => 'projects'));
  if ($wp_query->have_posts()) { 
    while ($wp_query->have_posts()) {
      if($i % 3 == 0)
      {
        if ($i > 0) echo '</div>';
        echo '<div class="panel">';
      }
      $wp_query->the_post();
      the_title();         
      $i++; 
    }
    echo '</div>';    
  } 

?>
</div>

我还清理了代码,消除了没有帖子时出现的错误。

试试这段代码

<div class="row">
    <?php 
      $i = 1;
      $wp_query = new WP_Query( array( 'posts_per_page' => -1, 
                  'post_type' => 'projects' ) );

      if ( $wp_query->have_posts() ) : 
         while ( $wp_query->have_posts() ) :
            if($i % 3 == 1) { echo '<div class="panel">'; }
            $wp_query->the_post();
            the_title();         
            if($i % 3 == 0 || $i == $wp_query->post_count) { echo '</div>'; }
            $i++; 
         endwhile;
      endif; 
  ?>

</div>

试试这段代码

<div class="row">
    <?php 
      $i = 1;
      $wp_query = new WP_Query( array( 'posts_per_page' => -1, 
                  'post_type' => 'projects' ) );

      if ( $wp_query->have_posts() ) : 
         while ( $wp_query->have_posts() ) :
            if($i % 3 == 1) { echo '<div class="panel">'; }
            $wp_query->the_post();
            the_title();         
            if($i % 3 == 0 || $i == $wp_query->post_count) { echo '</div>'; }
            $i++; 
         endwhile;
      endif; 
  ?>

</div>

如果我正确理解了你的问题,那么如果你的查询返回3个项目的精确倍数,你就不想添加一个空div

因此,取而代之的是:

if($i % 3 == 0)
使用以下命令:

if($i % 3 == 0 && $wp_query->post_count != $i)
我的建议是将您的代码编辑为:

<div class="row">
    <?php 
    $i = 1;
    $wp_query = new WP_Query(array('posts_per_page' => -1, 'post_type' => 'projects'));
    echo '<div class="panel">';
    if($wp_query->have_posts()) : while ($wp_query->have_posts()) :
         $wp_query->the_post();

         the_title();         
         if($i % 3 == 0 && $wp_query->post_count != $i){
             echo '</div><div class="panel">';
         }
         $i++; 
     endwhile; endif;
     echo '</div>';    
  ?>

</div>


但从那以后,马克斯·p.用我的建议做了更好的回答。这两个代码之间的区别在于,当没有项目被赋予时,这段代码将创建一个空div,但他的不是。

如果我正确理解了您的问题,那么如果您的查询返回3个项目的精确倍数,您就不想添加空div

因此,取而代之的是:

if($i % 3 == 0)
使用以下命令:

if($i % 3 == 0 && $wp_query->post_count != $i)
我的建议是将您的代码编辑为:

<div class="row">
    <?php 
    $i = 1;
    $wp_query = new WP_Query(array('posts_per_page' => -1, 'post_type' => 'projects'));
    echo '<div class="panel">';
    if($wp_query->have_posts()) : while ($wp_query->have_posts()) :
         $wp_query->the_post();

         the_title();         
         if($i % 3 == 0 && $wp_query->post_count != $i){
             echo '</div><div class="panel">';
         }
         $i++; 
     endwhile; endif;
     echo '</div>';    
  ?>

</div>


但从那以后,马克斯·p.用我的建议做了更好的回答。这两个代码之间的区别在于,当没有任何项目被赋予时,此代码将创建一个空div,但其不是。

您可以添加一个名为
$j
$j=floor($i/3)
的变量


然后
如果($i%3==0&&$i!=3*$j){echo';}

您可以添加一个名为
$j
$j=floor($i/3)
的变量


然后
如果($i%3==0&&$i!=3*$j){echo';}

检查$i的值。如果“$i%9”的值为0。然后在while循环的末尾添加一个额外的div。你的意思是在末尾添加一个额外的div?如果我们有9个项目?您可以查看函数数组\u chunkCheck以检查$i的值。如果“$i%9”的值为0。然后在while循环的末尾添加一个额外的div。你的意思是在末尾添加一个额外的div?如果我们有9个项目?您可以查看函数数组。\u chunknow如果有3个项目的倍数,那么它将提供一个额外的div,否则不是@SalihK正如您所见,我使用的运算符(!=)表示“不相等”,这意味着如果
$I
变量与项目数相等,则返回false。请显示如何使用上述整个代码的逻辑,因为它不适用于我。它更具可读性,感觉像一个wp waynow如果有3个项目的多个,那么它将提供一个额外的div,否则不是吗@SalihK正如您所见,我使用的运算符(!=)表示“不相等”,这意味着如果
$I
变量与项目数相等,则返回false。请显示如何使用上述整个代码的逻辑,因为它不适用于我。它更具可读性,感觉像一个wpway@SalihK如果项目编号不能被3整除,则不会添加闭合div.@MaxP。您可以使用
运算符
$i%3==0 | |$i==wp|u query->post_count
您将得到相同的结果,但我认为这将使代码可读。@SalihK如果项目编号不能被3整除,则不会添加一个结束div。@MaxP。您可以使用
运算符
$i%3==0 | |$i==wp\u query->post\u count
获得相同的结果,但我认为这会使代码可读。