WordPress DO_SHORT CODE第一次迭代

时间:2012-09-04 作者:Ian Hoar

我创建了一个如下所示的递归短代码。

[tabs]
[tab state="active"]Home[/tab]
[tab]About[/tab]
[tab]Contact[/tab]
[/tabs]

[tabcontent]
[tabpane]Content 1[/tabpane]
[tabpane]Content 2[/tabpane]
[tabpane]Content 3[/tabpane]
[/tabcontent]
它正在工作,但我想删除state=“active”并自动将其添加到第一个选项卡中,但我不确定如何判断我的do\\u shortcode是哪个迭代?

Update: 更好的是,如果我可以在遍历do\\u短代码时保留一个计数,这样我就可以添加id=“tab1”,id=“tab2”之类的属性。

1 个回复
最合适的回答,由SO网友:Ian Hoar 整理而成

解决了这两个问题。您可以保持计数,并找出何时在同一个go中进行第一次迭代。

static $count;
if(!$count) {
    $count = 1;
    $state = \' active\';
} else {
    $count++;
    $state = \'\';
}
来自PHP手册。静态变量仅存在于局部函数作用域中,但当程序执行离开此作用域时,它不会丢失其值

这段代码在递归函数中设置一个静态变量,在本例中是由do\\u shortcode()调用的函数。这可以让您保持计数,因此如果您想拥有像#tab-1、#tab-2这样的id,您可以轻松地进行计数。通过这段代码,您还可以知道第一次迭代何时发生。我设置了一个$state变量,并给它一个活动的css类。由于我已经将其附加到一个class属性,所以我只得到了active,但是如果只有一个类,比如class=“active”,那么也可以传递整个过程。

结束

相关推荐

If else with shortcodes

如果自定义字段值为true,我只希望显示其中一个短代码。我不理解这样做的逻辑。所以基本上,如果有twitch视频和自己的3D视频,我只想显示顶部的视频(twitch)。等等等等。这是否超出了if-else语句?我正在将此代码添加到我的模板中。php文件。我的第二个问题是,使用switch方法会更好吗?<?php $twitch = get_post_meta( $post->ID, \'twitch\', $single = true ); $own3d = get_post_