等价于wordpress/php中的ExpressionEngine开关标记?
在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
<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); ?>