将主题选项值添加为自定义主体类

时间:2017-01-04 作者:Tom Perkins

我希望根据主题选项向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( \'\'); ?>>
提前感谢,

汤姆

1 个回复
最合适的回答,由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().