Php 具有特定顺序的不同大小的网格
我需要制作一个与此类似的网格: 很少有关键词:特定尺寸图案,越大的点越高Php 具有特定顺序的不同大小的网格,php,loops,wordpress,Php,Loops,Wordpress,我需要制作一个与此类似的网格: 很少有关键词:特定尺寸图案,越大的点越高 所有框都是自定义帖子-让我们将每个框称为帖子。 所有不同大小的帖子都有不同的meta_键,称为$size: 黄色/大$size=1 橙色/中等$size=2 蓝色/小$size=3 所有帖子都有一个称为$points的meta_键值,每个帖子的值都完全不同(可以是0到10000之间的任意值)$points当前用作orderby 我这样称呼所有这些帖子: $custom_posts= new WP_Query(ar
所有框都是自定义帖子-让我们将每个框称为帖子。 所有不同大小的帖子都有不同的meta_键,称为
$size
:
- 黄色/大<代码>$size=1代码>
- 橙色/中等<代码>$size=2代码>
- 蓝色/小
$size=3代码>
所有帖子都有一个称为
$points
的meta_键值,每个帖子的值都完全不同(可以是0到10000之间的任意值)<代码>$points当前用作orderby
我这样称呼所有这些帖子:
$custom_posts= new WP_Query(array(
'post_type' => 'custom-post',
'meta_key' => 'points',
'orderby' => 'meta_value_num'
));
if ( $custom_posts->have_posts() ) :
echo '<div id="post-items"><ul class="row list-unstyled">';
while ( $custom_posts->have_posts() ) : $custom_posts->the_post();
$size= get_post_meta( $post->ID, 'post_size', true );
$points = get_post_meta( $post->ID, 'post_points', true );
echo '<li>';
if($size == 1) {
?>
//Big yellow box HTML
<?php
}
else if($size == 2) {
?>
//Medium orange box HTML
<?php
}
else if($size == 3) {
?>
//Small blue box HTML
<?php
}
echo '</li>';
endwhile;
echo '</ul></div>';
wp_reset_query();
else :
?>
<p class="text-muted"><?php _e( 'No Posts.', 'aa' ); ?></p>
<?php
endif;
$custom\u posts=新的WP\u查询(数组)(
“帖子类型”=>“自定义帖子”,
“元键”=>“点”,
'orderby'=>'meta\u value\u num'
));
如果($custom\u posts->have\u posts()):
echo';
而($custom_posts->have_posts()):$custom_posts->the_post();
$size=get\u post\u meta($post->ID,'post\u size',true);
$points=get_post_meta($post->ID,'post_points',true);
回音“- ”;
如果($size==1){
?>
//大黄框HTML
//中橙色框HTML
//蓝色小框HTML
我不是Wordpress的专家,因此使用foreach
循环可能有一种更简单的方法,但这里使用的是while
,正如您在问题中所说:
// This will be used as a counter
$i=0;
while ( $custom_posts->have_posts() ) : $custom_posts->the_post();
// Get size based on counter
switch($i) {
case 0:
case 5:
$size = 1;
break;
case 1:
case 2:
case 3:
case 4:
case 6:
case 7:
$size = 2;
break;
default:
$size = 3;
}
$points = get_post_meta( $post->ID, 'post_points', true );
echo '<li>';
if($size == 1) {
?>
//Big yellow box HTML
<?php
}
else if($size == 2) {
?>
//Medium orange box HTML
<?php
}
else if($size == 3) {
?>
//Small blue box HTML
<?php
}
echo '</li>';
// Increment the counter
$i++;
endwhile;
//这将用作计数器
$i=0;
而($custom_posts->have_posts()):$custom_posts->the_post();
//根据计数器获取大小
交换机(一美元){
案例0:
案例5:
$size=1;
打破
案例1:
案例2:
案例3:
案例4:
案例6:
案例7:
$size=2;
打破
违约:
$size=3;
}
$points=get_post_meta($post->ID,'post_points',true);
回音“- ”;
如果($size==1){
?>
//大黄框HTML
//中橙色框HTML
//蓝色小框HTML
我不是Wordpress的专家,因此使用foreach
循环可能有一种更简单的方法,但这里使用的是while
,正如您在问题中所说:
// This will be used as a counter
$i=0;
while ( $custom_posts->have_posts() ) : $custom_posts->the_post();
// Get size based on counter
switch($i) {
case 0:
case 5:
$size = 1;
break;
case 1:
case 2:
case 3:
case 4:
case 6:
case 7:
$size = 2;
break;
default:
$size = 3;
}
$points = get_post_meta( $post->ID, 'post_points', true );
echo '<li>';
if($size == 1) {
?>
//Big yellow box HTML
<?php
}
else if($size == 2) {
?>
//Medium orange box HTML
<?php
}
else if($size == 3) {
?>
//Small blue box HTML
<?php
}
echo '</li>';
// Increment the counter
$i++;
endwhile;
//这将用作计数器
$i=0;
而($custom_posts->have_posts()):$custom_posts->the_post();
//根据计数器获取大小
交换机(一美元){
案例0:
案例5:
$size=1;
打破
案例1:
案例2:
案例3:
案例4:
案例6:
案例7:
$size=2;
打破
违约:
$size=3;
}
$points=get_post_meta($post->ID,'post_points',true);
回音“- ”;
如果($size==1){
?>
//大黄框HTML
//中橙色框HTML
//蓝色小框HTML
我不明白你所说的“在特定的$size模式下查询它们时也考虑到$points(更高的点在更高的位置,但不要破坏顺序-就像我的图片上那样)”是什么意思。你能澄清一下吗?@Mike如果这看起来有点混乱,我很抱歉-我在解释自己时遇到了麻烦。我希望我的帖子在特定的模式下考虑到大小(与图中相同)但在该模式内以点数进行排序。所有橙色框按点数排序,但保持在所有橙色框所在的位置,还有两个大黄色框;即使下面的黄色框有更多点数,它们也会切换位置,但考虑到整个尺寸模式,两个黄色框仍保持在特定位置。如果是n,我可以尝试进一步澄清Eded。让我知道。我甚至可以做另一个图像。@Mike基本上,$point
竞争/订购者只在相同大小的框中工作-大小模式总是相同的。我想我知道你的意思,但我不确定。你能不能只按点订购
,然后在循环结果时使用开关来获取大小既然我们知道模式应该是1,2,2,2,1,2,2,3,3,3,3,3,3,3?@Mike我很肯定(99%)你说得对。我希望你的建议能与我的查询代码进行简短的整合,因为我不确定在哪里或如何添加开关(还不太好).现在更棘手的部分是:如果有未知的数量的帖子&它仍然有效呢?不知何故重复这个模式?我不明白你所说的“在特定的$size模式下查询它们,同时考虑$points(更高的点对应更高的点,但不要打破我图片上的顺序)?”.你能澄清一下吗?@Mike如果这看起来有点混乱,我很抱歉-我在解释自己时遇到了麻烦。考虑到大小,我希望我的帖子采用特定的模式(与图片上相同)但在该模式内以点数进行排序。所有橙色框按点数排序,但保持在所有橙色框所在的位置,还有两个大黄色框;即使下面的黄色框有更多点数,它们也会切换位置,但考虑到整个尺寸模式,两个黄色框仍保持在特定位置。如果是n,我可以尝试进一步澄清Eded。让我知道。我甚至可以做另一个图像。@Mike基本上,$point
竞争/订购者只在相同大小的框中工作-大小模式总是相同的。我想我知道你的意思,但我不确定。你能不能只按点订购
,然后在循环结果时使用开关来获取大小既然我们知道模式应该是1,2,2,2,1,2,2,3,3,3,3,3,3,3?@Mike我很肯定(99%)你说得对。我希望你的建议能与我的查询代码进行简短的整合,因为我不确定在哪里或如何添加开关(还不太好).现在更棘手的部分是:如果有未知的数量的帖子&它仍然有效呢?不知何故重复该模式?如果你想重复该模式,而不是在这之后重复所有内容,请告诉我