Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.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
等价于wordpress/php中的ExpressionEngine开关标记?_Php_Wordpress_Expressionengine - Fatal编程技术网

等价于wordpress/php中的ExpressionEngine开关标记?

等价于wordpress/php中的ExpressionEngine开关标记?,php,wordpress,expressionengine,Php,Wordpress,Expressionengine,在ExpressionEngine中,在其“循环”版本中,我可以向任何元素添加标记,如下所示: <li class="{switch='one|two|three|four|five|six'}"> li的第一个迭代将有一个类,下一个是两个,六个之后再次循环。我在wordpress网站上需要类似的功能,但不知道如何实现。是否有内置的wordpress函数,或者我需要用php编写某种函数 目前,使用它试图使用@Leonard的解决方案,但是“四”类被反复使用,而不是循环使用 &l

在ExpressionEngine中,在其“循环”版本中,我可以向任何元素添加标记,如下所示:

<li class="{switch='one|two|three|four|five|six'}">
  • li的第一个迭代将有一个类,下一个是两个,六个之后再次循环。我在wordpress网站上需要类似的功能,但不知道如何实现。是否有内置的wordpress函数,或者我需要用php编写某种函数

    目前,使用它试图使用@Leonard的解决方案,但是“四”类被反复使用,而不是循环使用

    <?php
    
    $argsGallery = array(
        'post_type' => 'gallery',
        'orderby'       => 'menu_order',
        'order'         => 'ASC'
    );
    $the_query = new WP_Query( $argsGallery );
    
    // The Loop
    while ( $the_query->have_posts() ) : $the_query->the_post();?>
    
                <div class="<?php cycle('four|three|five|two|six|four'); ?> columns">
                    <div class="thumb">
    
                        <a class="jackbox" 
                            data-group="images" 
                            data-thumbnail="<?php the_field('image'); ?>" 
                            data-title="Image One" 
                            data-description="#description_1" 
                            href="<?php the_field('image'); ?>"
                        >
                            <div class="jackbox-hover jackbox-hover-black">
                                <p><?php the_field('image_description'); ?> </p>
                            </div>
                            <img 
                                src="<?php the_field('image'); ?>" 
                                alt="responsive lightbox" 
                            />
                        </a>
                    </div>
                </div>
    
    <?php
        endwhile;
        wp_reset_query();
        wp_reset_postdata();
    ?>
    
    
    
    我知道的太多了,我从来没有见过这样的事情。也许这就是为什么
    ExpressionEngine
    是付费的(已经有了这样的内置解决方案。在WP中,您必须在手边完成)。这里有一个自己制作的想法:

    更新:@jason mccreary的回答我知道我错了。我对周期一无所知。但这里我有一个片段似乎是这样工作的:

    function cycle($chunks)
    {   
        if ( ! is_array($array = explode('|', $chunks)))
            return;
    
        static $i    = 0;
        echo $array[$i ++];
        if ($i >= count($array))
            $i   = 0;
    }
    ?>
    
    <?php for ($i = 0; $i < 9;  ++ $i) : ?>
        <li class="<?php echo cycle('one|two|three|four|five|six'); ?>"></li>
    <?php endfor; ?>
    
    功能循环($chunks)
    {   
    如果(!is_array($array=explode('|',$chunks)))
    返回;
    静态$i=0;
    echo$array[$i++];
    如果($i>=count($array))
    $i=0;
    }
    ?>
    这被称为循环函数。不幸的是,PHP本身并没有这样的功能

    您需要通过以下方式自定义编写一个:

    • 创建一个函数。这是一个例子
    • 直接在循环中使用计数器和。以下是一个人为的例子:

      $cycles = array('one', 'two', 'three');
      for ($i = 0; $i < 9; ++$i) {
        echo $cycles[$i % 3];
      }
      
      $cycles=数组('1','2','3');
      对于($i=0;$i<9;++$i){
      回显$cycles[$i%3];
      }
      

      • 在寻找完全相同的东西时发现了这个问题。。。在你发布20分钟后,谷歌的顶部。疯子无论如何

        我提出了一个我已经测试过的函数(尽管速度很快),您可以访问到您的functions.php,它可以与标准的Wordpress循环一起工作。它可能需要适应一些需求,但希望这是一个良好的开端

        它使用$wp_查询数组中的当前_post计数,并计算出它需要在循环值中的位置

        function cycle($input, $delimiter = '|', $query = false) {
        
            if($query == false):
                global $wp_query ;
                $current_post = $wp_query->current_post + 1;
            else:
                $current_post = $query->current_post + 1;
            endif;
        
        
            $switches = explode($delimiter, $input);
        
            $total_switches = count($switches) ;
            $current_set = ceil( $current_post / $total_switches)  ;
        
            $i = (($current_post - ($current_set * $total_switches)) + $total_switches) - 1 ;
        
            echo $switches[$i];
        
        }
        
        然后可以在标准循环中使用它,如下所示:

         <?php cycle('first|second|third|fourth'); ?>
        
        
        
        或者,如果需要,您可以自定义定界:

         <?php cycle('first*second*third', '*'); ?>
        
        
        
        或者,如果将其用于自定义wp_查询,则必须将其与作为第三个参数输入的查询一起使用:

         <?php cycle('first|second|third', '|', $the_query); ?>
        
        
        

        我确信有一种更整洁的方式来输入自定义查询,如果/当我找到一种方式时,我会继续查找并更新

        我有点迷路了。请给我一个使用此代码的
      • ,但我在每个元素中只得到四个重复。@brunam对于您请求的类,我必须做什么
        $wp\u query
        <代码>li的第一个迭代将有一个类,下一个是两个,六个之后再次循环。像我的回答那样,你觉得怎么样?这不是你想要的吗?我会将顶部的代码更新为当前使用的代码。。。它没有像它应该的那样工作…我想我知道如何绕过自定义wp_查询的问题,给我一些时间,我会给它一个测试和更新@NomikOS当我更新东西时,我会发布一个例子。@brunam使用我的循环函数。我刚刚在您的新更新中进行了测试,并完全按照您的要求进行迭代。然后更改他的名字以避免冲突,并将其放入主题的
        function.php
        文件中,然后立即去喝杯啤酒……嗨,布鲁纳姆,我想知道你是否有机会查看我发布的已审阅代码,如果有,它对你有用吗?莱纳德,今天将插入并查看并让你知道。谢谢你的帮助!别担心!我自己也用过一点,到目前为止看起来都不错,但这并不意味着它是完美的。如果您还有任何问题,我很乐意为您提供帮助。
         <?php cycle('first|second|third', '|', $the_query); ?>