[英]Count nested shortcodes, then reset for next parent shortcode
一個有趣的問題讓我感到困惑,所以我知道如何使用 static 計數器計算在頁面上調用短代碼的次數。 但是,我想在調用父簡碼時重置計數器:
<?php function gw_row($atts, $content = null) {
return '<div class="gw-row">'.do_shortcode($content).'</div>';
} add_shortcode("gw-row", "gw_row");
function gw_column($atts, $content = null) {
static $count = 0; $count++; if($count > 5){$count = 0}
return '<div class="column">'.do_shortcode( $content ).'</div>';
} add_shortcode("gw-column", "gw_column");?>
所以進一步解釋一下,一個頁面上會有多個[gw-row]
短代碼,這是“父短代碼”。 在這個簡碼中,我使用[gw-column]
。 我想計算每個父簡碼中頁面上使用了多少列。
例子:
[gw-row]
[gw-column]$Count = 1[/gw-column]
[gw-column]$Count = 2[/gw-column]
[/gw-row]
Reset $count
[gw-row]
[gw-column]$Count = 1[/gw-column]
[gw-column]$Count = 2[/gw-column]
[gw-column]$Count = 3[/gw-column]
[/gw-row]
Reset $count
我曾考慮過使[gw-row]
成為 object 並在<div>
關閉后重置$count
這可能有效,但我想知道是否有更好的方法?
我的想法:
<?php function gw_row($atts, $content = null) {
global $count;
ob_start();?>
<div class="gw-row">
<?php do_shortcode($content);?>
</div><?php $count = 0;?>
<?php return ob_clean();
} add_shortcode("gw-row", "gw_row");
function gw_column($atts, $content = null) {
$count++; if($count > 5){$count = 0}
return '<div class="column">'.do_shortcode( $content ).'</div>';
} add_shortcode("gw-column", "gw_column");?>
好的,所以我認真地考慮了這一點,解決方案非常簡單並且接近我的建議。
只需全局定義$count
並在[gw-row]
短代碼中將其設置為 0。 這將在每次調用時重置它:
<?php function gw_row($atts, $content = null) {
global $count; $count = 0;
return '<div class="gw-row">'.do_shortcode($content).'</div>';
} add_shortcode("gw-row", "gw_row");
function gw_column($atts, $content = null) {
global $count; $count++; if($count > 5){$count = 0}
return '<div class="column">'.do_shortcode( $content ).'</div>';
} add_shortcode("gw-column", "gw_column");?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.