如何巧妙地组合多个条件语句

How to neatly combine multiple conditional statements

我正在尝试将边栏小部件添加到两个不同的位置。我的代码可以运行,但存在重复,所以我的问题是如何组合这些语句?

            if( tribe_is_month() && !is_tax() ){ // Month View Page
                dynamic_sidebar( 'lavida_calendar' ); 
            } 
            elseif ( tribe_is_past() || tribe_is_upcoming() && ! is_tax() ) { // List View Page
                dynamic_sidebar( 'lavida_calendar' ); 
            }
            else {
            }

你好只需在一个语句中用 OR 条件设置两个条件

if( (tribe_is_month() && !is_tax())  || 
    (tribe_is_past() || tribe_is_upcoming() && ! is_tax() )){
    dynamic_sidebar( 'lavida_calendar' ); 
}

由于 !is_tax 存在于两个分支中,您可以以此为主导。然后,注意剩下的都是 OR 条件:

if (!is_tax() && (tribe_is_month() || tribe_is_past() || tribe_is_upcoming())) {
    dynamic_sidebar(...);
}

不过,此重写具有仅调用一次 is_tax 的副作用。

另外,这条规则似乎可以简化,因为它看到你想显示任何一个月的侧边栏,过去的和即将到来的,这不是税

if ((tribe_is_month() || (tribe_is_past() || tribe_is_upcoming())
    && !is_tax()) {
    dynamic_sidebar( 'lavida_calendar' ); 
}