Я пытаюсь добавить дополнительный класс ко всем сообщениям определенного типа — в настоящее время я получаю пустую страницу после добавления этого в functions.php
Мне нужно добавить класс «post» только там, где классы $ содержат строку «toefl_post».
Вот мой код:
function add_post_class($classes) {
$tester = strpos($classes,'toefl_post');
$additional = 'post'
if($tester === false) {
// string NOT found
return $classes;
}
else {
// string found
$classes = $classes + $additional;
return $classes;
};
}
add_filter('post_class', 'add_post_class');
Я довольно новичок в PHP, так что я предполагаю, что с кодом что-то не так. Буду очень признателен за любую помощь.
Да, у вас там много синтаксических проблем.
1.- $ classes — это массив, а не строка
2.- Вы не можете использовать +
чтобы связать струны, вы должны использовать .
3.- Чтобы добавить ключ в массив, вы должны использовать array_push
попробуй это:
function add_post_class($classes) {
$additional = 'post';
foreach ($classes as $class) {
if( $class == 'toefl_post'){
array_push($classes , $additional);
break;
}
}
return $classes;
}
add_filter('post_class', 'add_post_class');
Ваша проблема здесь $additional = 'post'
Вам не хватает ;
,
Есть и другие синтаксические ошибки, как говорит Энрике Чавес.
Ответ работает, но этот более простой:
add_filter('post_class','my_class');
function my_class( $classes ) {
$classes[] = 'my-class-name';
return $classes;
}