Расширение классов тела спереди и сзади
Я хочу расширить оба класса тела как для интерфейса, так и для области администрирования. Я видел несколько фрагментов, плавающих вокруг, которые привели меня к следующему
add_filter('body_class','add_custom_body_classes');
add_filter('admin_body_class', 'add_custom_body_classes');
Теперь мне кажется, что мне действительно нужно выполнить проверку типа, как показано ниже, потому что в случае внутреннего расширения переменная является строкой, а не массивом.
function add_custom_body_classes($classes) {
$someClassA = 'someText';
$someClassB = 'someText';
if (is_array($classes)) {
$classes[] = $someClassA;
$classes[] = $someClassB;
}
else {
$classes .= ' ' . $someClassA;
$classes .= ' ' . $someClassB;
}
return $classes;
}
Это правильно или чего мне не хватает?
1 answers
Ваш фрагмент кода добавляет следующие классы в тег body на переднем конце,
someText
someText
Ваш фрагмент кода добавляет следующие классы в тег body на задней панели,
someClassA
someClassB
Если это ваш предполагаемый результат, то да, это работает и правильно.
Вы также могли бы сделать,
function add_custom_body_classes($classes) {
$someClassA = 'someText';
$someClassB = 'someText';
if (is_array($classes)) {
$classes[] = $someClassA;
$classes[] = $someClassB;
}
elseif (is_admin()) {
$classes .= ' ' . someClassA;
$classes .= ' ' . someClassB;
}
return $classes;
}
add_filter('body_class','add_custom_body_classes');
add_filter('admin_body_class', 'add_custom_body_classes');
С помощью условного оператора is_admin
убедитесь, что вы находитесь на странице администратора, прежде чем добавлять определенные классы.
Если ничего из вышеперечисленного не верно, и вы хотите того же классы (someText
) должны отображаться как спереди, так и сзади, затем вам нужно изменить...
$classes .= ' ' . someClassA;
$classes .= ' ' . someClassB;
Чтобы показать,
$classes .= ' ' . $someClassA;
$classes .= ' ' . $someClassB;
Так как вы отсутствовали $
в именах переменных.
Предполагая, что вам нужны одни и те же классы на переднем и заднем концах, вы также можете выполнить преобразование массива в строку, например,
function add_custom_body_classes($classes) {
$classes = array('classA', 'classB', 'classC');
$string = implode($classes, ' ');
if (!is_admin() && is_array($classes)) {
return $classes;
}
elseif (is_admin()) {
return $string;
}
}
add_filter('body_class','add_custom_body_classes');
add_filter('admin_body_class', 'add_custom_body_classes');