[英]PHP While control structure in Wordpress
我一直在努力解决 Wordpress 中的 PHP While 控制结构。我绝对知道这是可能的,只是不知道具体怎么做。
我正在使用 Wordpress 数据库来存储我的小部件控件表单字段数据,并且我想使用此代码循环遍历数据。
need to control structure by the 2 numbers defined in my widget control.
$data['houses_row']
$data['shown_rows']
这是我正在尝试做的事情:
我在想房子,每个房子都在一块 plot 的土地上作为类比。 有点。
每行显示多少间房屋? 以及要显示多少行?
如果该行的房屋多于该行可以处理的房屋,则需要隐藏这些房屋,这很自然。 我在想很多房子到很多行。
我希望有人可以帮助我解决我的问题。
static $number_posts_shown = 1;
static $per_row_count = 0;
while ( have_posts() ) : the_post();
if ( $per_row_count <= $data['houses_row'] ):
echo "show house: #". $per_row_count ." ";
endif;
$per_row_count++;
// show rows
if ( $number_posts_shown <= $data['shown_rows'] ):
echo "<hr />";
endif;
$number_posts_shown++;
endwhile;
当 shown_rows 为 4 且 houses_row(每行房屋数)为 4 时,我希望 output 是这个。
show house: #0 show house: #1 show house: #2 show house: #3
--------------------------------------------------------------------------------
blank
--------------------------------------------------------------------------------
blank
--------------------------------------------------------------------------------
blank
当 shown_rows 为 4 且 houses_row(每行房屋数)为 2 时,output 就是这个。
show house: #0 show house: #1
--------------------------------------------------------------------------------
show house: #2 show house: #3
--------------------------------------------------------------------------------
blank row
--------------------------------------------------------------------------------
blank row
从你的问题中,我了解到你想要基于以下格式显示房屋(存储在 wordpress post 中):
$data['houses_row']
$data['shown_rows']
最简单的解决方案是先将您已经拥有的内容存储在临时数组中:
$temporary_data = array();
while ( have_posts() ) : the_post();
$temporary_data[] = $post;//retrieve current post object
endwhile;
拥有所有发布数据后,开始第二个循环以生成它:
$current_house_counter = 0;
$available_slot = 0;
for($shown_row = 0; $shown_row < $data['shown_rows']; $shown_row++)
{
for($house_row = 0; $house_row < $data['houses_row']; $house_row++)
{
if( isset($temporary_data[$current_house_counter]) )
{
echo "show house: #". ($current_house_counter + 1) ." ";
}
else
{
$available_slot++;
echo "available slot #" . $available_slot . " ";
}
$current_house_counter++;
}
echo "<hr />";
}
因为我现在没有 wordpress 安装,我会给你这个代码片段来测试它:
$temporary_data[] = "data #1";
$temporary_data[] = "data #2";
$temporary_data[] = "data #3";
$temporary_data[] = "data #4";
$temporary_data[] = "data #5";
$data['houses_row'] = 3;
$data['shown_rows'] = 3;
$current_house_counter = 0;
$available_slot = 0;
for($shown_row = 0; $shown_row < $data['shown_rows']; $shown_row++)
{
for($house_row = 0; $house_row < $data['houses_row']; $house_row++)
{
if( isset($temporary_data[$current_house_counter]) )
{
echo "show house: #". ($current_house_counter + 1) ." ";
}
else
{
$available_slot++;
echo "available slot #" . $available_slot . " ";
}
$current_house_counter++;
}
echo "<hr />";
}
上面的代码有以下结果:
show house: #1 show house: #2 show house: #3 <hr />
show house: #4 show house: #5 available slot #1 <hr />
available slot #2 available slot #3 available slot #4 <hr />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.