Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 具有特定顺序的不同大小的网格_Php_Loops_Wordpress - Fatal编程技术网

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%)你说得对。我希望你的建议能与我的查询代码进行简短的整合,因为我不确定在哪里或如何添加
    开关(还不太好).现在更棘手的部分是:如果有
    未知的
    数量的帖子&它仍然有效呢?不知何故重复该模式?如果你想重复该模式,而不是在这之后重复所有内容,请告诉我