私はこのコードを持っています:
<?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 }; ?>
これは、私が開発しているワードプレスのテーマの一部です。サイドバーがアクティブかどうかに応じて、さまざまなクラスが表示されるはずです。サイドバーがアクティブな場合は 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')) { ?>
'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サポートフォーラムでの私の質問を無視しています.