![](/img/trans.png)
[英]Wordpress nested if is_active_sidebar within another is_active_sidebar
[英]'if/elseif' and 'is_active_sidebar' statement in Wordpress theme
我有以下代碼:
<?php if ( is_active_sidebar('lt') && is_active_sidebar('rt')) { ?>
<div class="grid_6 eqh">
<?php } elseif ( !is_active_sidebar('lt') || !is_active_sidebar('rt')) { ?>
<div class="grid_9 eqh">
<?php } elseif ( !is_active_sidebar('lt') && !is_active_sidebar('rt')) { ?>
<div class="grid_12 eqh">
<?php }; ?>
這是我正在開發的wordpress主題的一部分。 根據側邊欄是否處於活動狀態,應該顯示不同的類。 如果側邊欄處於活動狀態,我從wp得到的響應為1,否則為NULL。 如果'lt'側邊欄處於活動狀態,則起作用,但'rt'則不起作用,它會顯示'grid_9'div,如果沒有一個側邊欄處於活動狀態,它將顯示'grid_12'div,但是如果'rt'側邊欄處於非活動狀態且'lt'已處於活動狀態,它仍顯示'grid_6'div。 如果我刪除第一個if語句:
<?php if ( is_active_sidebar('lt') && is_active_sidebar('rt')) { ?>
它不顯示任何div。
我已經嘗試過想出的所有組合,但我分開了:
<?php } elseif ( !is_active_sidebar('lt') || !is_active_sidebar('rt')) { ?>
用2個不同的語句,嘗試不帶'elseif'的if語句,嘗試用'AND'和'OR'代替'&&'和'|| 以及其他許多變體,但沒有任何效果。
如果有人能幫助我或至少向正確的方向邁進,我將非常感激。
根據@ one-trick-pony的建議,代碼現在為:
<?php
$ltActive = is_active_sidebar('lt');
$rtActive = is_active_sidebar('rt');
if($ltActive && $rtActive){
$class = 'grid_6';
}elseif(!$ltActive && !$rtActive){
$class = 'grid_12';
}else{
$class = 'grid_9'; // <==
}
?>
<div class="<?php echo $class; ?> eqh">
php代碼正在運行,但是WP中的is_active_sidebar()
函數似乎存在錯誤,但是他們在WP支持論壇上忽略了我的問題。
首先,將返回結果放入變量中(這將加快處理速度):
$ltActive = is_active_sidebar('lt');
$rtActive = is_active_sidebar('rt');
現在,問題出在您的第二個條件下-您正在檢查是否有任何側邊欄處於非活動狀態,並且如果其中一個或兩個都處於非活動狀態,則將永遠不會評估第三個條件。
所以:
(!$ltActive && !$rtActive)
必須去之前:
(!$ltActive || !$rtActive)
(不需要最后的條件,您可以離開else{...}
)
好的,這是代碼:
if($ltActive && $rtActive){
$class = 'class when both sidebars are active';
}else(!$ltActive && !$rtActive){
$class = 'class when both sidebars are inactive';
}else{
$class = 'class when only one of the sidebars is active (either one)';
}
?>
<div class="<?= $class; ?>">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.