我希望根据主题选项向body元素添加一些自定义类。
我已经设置了两个主题选项(“rounded\\u corner\\u radio”和“gradient\\u radio”),可以使用echo将它们的值成功输出到前端,这样我就知道它们正在工作。
我现在需要做的是将这些值插入到body类中,但无法确定如何插入。以下是我目前的情况,欢迎提出任何建议。
<?php
$rounded_corner_radio = of_get_option( \'rounded_corner_radio\' );
$gradient_radio = of_get_option( \'gradient_radio\' );
function custom_body_classes( $classes ) {
$classes[] = $rounded_corner_radio;
$classes[] = $gradient_radio;
return $classes;
}
add_filter( \'body_class\',\'custom_body_classes\' );
?>
<body <?php body_class( \'\'); ?>>
提前感谢,
汤姆
最合适的回答,由SO网友:birgire 整理而成
Review how the variable scope works..
我们不要再添加另一个全局变量,而是可以在过滤器的回调中获取选项值:
function wpse251261_custom_body_classes( $classes ) {
// Get option values
$rounded_corner_radio = of_get_option( \'rounded_corner_radio\' );
$gradient_radio = of_get_option( \'gradient_radio\' );
// Assign new body classes
$classes[] = esc_attr( $rounded_corner_radio );
$classes[] = esc_attr( $gradient_radio );
return $classes;
}
add_filter( \'body_class\',\'wpse251261_custom_body_classes\' );
注意,我们用
esc_attr()
, 因为
body_class
在这样的逃逸之后应用过滤器
get_body_class()
.