Добавление класса в post_class Wordpress с помощью add_filter в functions.php

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


person Yonatan Shippin    schedule 26.08.2015    source источник


Ответы (3)


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

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');
person Enrique Chavez    schedule 26.08.2015
comment
Спасибо Энрике, это сработало отлично! Действительно ценю это :) - person Yonatan Shippin; 26.08.2015

Ответ работает, но этот проще:

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

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

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

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

person santerref    schedule 26.08.2015