使用BODY_CLASS()函数删除和添加类

时间:2016-12-23 作者:Crashy

我想删除主题上的默认body类并添加一个新类。

我使用此代码执行以下操作:

//REMOVE / ADD HOME CLASS FROM BODY

add_filter(\'body_class\', function (array $classes) {
    if (in_array(\'home\', $classes)) {
      unset( $classes[array_search(\'home\', $classes)] );
    }
  return $classes;
});

add_filter(\'body_class\', function (array $classes) {
    if (in_array(\'blog\', $classes)) {
      unset( $classes[array_search(\'blog\', $classes)] );
    }
  return $classes;
});



add_action( \'body_class\', \'my_custom_class\');
function my_custom_class( $classes ) {
  $classes[] = \'my-custom-class\';
  return $classes;
}
代码之所以有效,是因为两个默认类消失,新类出现,但当我在中创建“my\\u custom\\u class”时style.css, CSS不起作用。

我尝试修改边距,例如,我使用以下代码:

.my_custom_class {
    margin-top: 350px !important;
}
但现场没有变化。

1 个回复
最合适的回答,由SO网友:Dave Romsey 整理而成

这个my_custom_class() 函数正在使用类名my-custom-class, 但是CSS的目标是类my_custom_class. 这两个字符串应该完全相同:

.my-custom-class {
    margin-top: 350px !important;
}
此外,处理所有body_class 在单个回调函数中填充:

add_action( \'body_class\', \'my_custom_class\');
function my_custom_class( $classes ) {
    // Remove \'blog\' class
    if (in_array(\'blog\', $classes)) {
        unset( $classes[array_search(\'blog\', $classes)] );
    }

    // Remove \'home\' class
    if (in_array(\'home\', $classes)) {
        unset( $classes[array_search(\'home\', $classes)] );
    }

    // Add custom class
    $classes[] = \'my-custom-class\';

    return $classes;
}

相关推荐