令人困惑的涉及!function_exists()|| !dynamic_sidebar()

时间:2016-03-24 09:55:28

标签: php wordpress function

我在Wordpress中对这些代码感到困惑。

这允许我显示first-footer-widget

<div class="col-lg-6 col-md-6 col-sm-12">
  <?php if ( !function_exists( 'dynamic_sidebar' ) || !dynamic_sidebar('first-footer-widget-area') ) ?>
</div>

<div class="col-lg-3 col-md-3 col-sm-6">
  <?php if ( !function_exists( 'dynamic_sidebar' ) || !dynamic_sidebar('second-footer-widget-area') ) ?>
</div>

<div class="col-lg-3 col-md-3 col-sm-6">
  <?php if ( !function_exists( 'dynamic_sidebar' ) || !dynamic_sidebar('third-footer-widget-area') ) ?>
</div>

然而,

我删除“!”它仍然有效。

<div class="col-lg-6 col-md-6 col-sm-12">
  <?php if ( !function_exists( 'dynamic_sidebar' ) || dynamic_sidebar('first-footer-widget-area') ) ?>
</div>

我很困惑。

1 个答案:

答案 0 :(得分:0)

如果函数不存在,那么第一个条件!function_exists( 'dynamic_sidebar' )将返回true,因此如果不执行令人兴奋的dynamic_sidebar函数。

如果您从第二个值中移除!,它只会使它(dynamic_sidebar函数)返回false!true,即false) - 换句话说,如果函数返回!dynamic_sidebar函数上的true将返回false,反之亦然。

总结:

// EVALUATED AS TRUE IF 'dynamic_sidebar' FUNCTION DOESN'T EXISTS, OR 'dynamic_sidebar' RETURNS FALSE
// EVALUATED AS FALSE IF 'dynamic_sidebar' FUNCTION EXISTS, AND 'dynamic_sidebar' RETURNS TRUE
if ( !function_exists( 'dynamic_sidebar' ) || !dynamic_sidebar('first-footer-widget-area') )

// EVALUATED AS TRUE IF 'dynamic_sidebar' FUNCTION DOESN'T EXISTS, AND 'dynamic_sidebar' RETURNS TRUE
// EVALUATED AS FALSE IF 'dynamic_sidebar' FUNCTION EXISTS, AND 'dynamic_sidebar' RETURNS FALSE
if ( !function_exists( 'dynamic_sidebar' ) || dynamic_sidebar('first-footer-widget-area') )

因此请检查dynamic_sidebar函数是否存在 - 这可能就是为什么这个条件总是被评估为TRUE的原因,即使您从!移除了dynamic_sidebar()