簡體   English   中英

Wordpress主題中的“ if / elseif”和“ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM