我有一个函数,它返回一个我想通过另一个值检查的值。据我所知,我无法在第一个函数中回显它,因为它在body_class的wordpress过滤器中使用并在那里输出。
那么,我如何检查另一个函数中返回的值是什么?
返回$ class的第一个函数示例,这是我要检查的内容:
function layout_class( $class ) {
// There is lots of more functionality here for the $layout variable
$layout = 'col-3cm';
$class[] = $layout;
return $class;
}
add_filter( 'body_class', 'layout_class' );
现在,此类决定是否加载辅助侧边栏模板。所以我想这样做:
function sidebar_dual() {
$layout = layout_class();
if (
( $layout == 'col-3cm' ) ||
( $layout == 'col-3cl' ) ||
( $layout == 'col-3cr' )
)
{ get_template_part('sidebar-2'); }
}
由于我无法回显第一个函数,并且不想编写另一个函数,因为它非常大 - 我该如何处理它?是否有一种简单的方法来检查返回值,类似于echo?
答案 0 :(得分:0)
如果您在$class
中留空layout_class($class)
,则无论如何您的功能无效。您需要为变量layout_class($class = null)
声明一些内容,或者如果您将其称为layout_class(null)
,但如果您没有声明它,则它将无法按照您设置它的方式工作。
其余代码没问题。
此外,您已在函数中声明$class
,并且您将其用作函数中的变量,我会重命名您的输出,即
function layout_class( $class ) {
// There is lots of more functionality here for the $layout variable
$layout = 'col-3cm';
return $layout;
}
答案 1 :(得分:0)
看起来您需要重构代码。
您只需将确定布局的代码移动到一个单独的函数中,您可以在过滤器内部和sidebar_dual()
函数内部调用:
function get_layout_mode(){
// There is lots of more functionality here for the $layout variable
$layout = 'col-3cm';
return $layout;
}
过滤功能变为:
function layout_class( $class ) {
$class[] = get_layout_mode();
return $class;
}
add_filter( 'body_class', 'layout_class' );
在sidebar_dual()
函数调用中get_layout_mode()
而不是layout_class()
通过将WP的get_body_class()
函数返回的字符串拆分为数组,然后检查数组中是否存在这3个类中的任何一个,也可以使用当前代码。我会选择第一个选项,因为它更清楚。