Добавление класса в WordPress post_class с использованием add_filter в функциях. Переполнение стека

Я пытаюсь добавить дополнительный класс ко всем сообщениям определенного типа — в настоящее время я получаю пустую страницу после добавления этого в 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, так что я предполагаю, что с кодом что-то не так. Буду очень признателен за любую помощь.

0

Решение

Да, у вас там много синтаксических проблем.

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');
2

Другие решения

Ваша проблема здесь $additional = 'post'

Вам не хватает ;,

Есть и другие синтаксические ошибки, как говорит Энрике Чавес.

1

Ответ работает, но этот более простой:

add_filter('post_class','my_class');
function my_class( $classes ) {
$classes[] = 'my-class-name';
return $classes;
}
1