Ожидаемый «add_filter» (T_STRING)

Я пытаюсь добавить фильтр для get_avatar, чтобы я мог реализовать выравнивание аватара, но когда я это делаю, я получил ожидаемый «add_filter» (T_STRING

Первый подход

add_filter('get_avatar', 'remove_photo_class'); function remove_photo_class($avatar) { return str_replace(' avatar', $image_align , $avatar); } 

Второй подход

 function mytheme_get_avatar( $myavatar ) { $myavatar = '<img class="'.$image_align.'" src="<' . get_template_directory_uri() . '/images/authors/' . get_the_author_meta('ID', $user_id) . '.jpg" alt="' . get_the_author() . ' ">'; return $myavatar; } //add_filter( 'get_avatar', 'mytheme_get_avatar' ); 

Оба возвращают ту же ошибку. Весь код можно найти здесь, в Пастебине .

Solutions Collecting From Web of "Ожидаемый «add_filter» (T_STRING)"

Вы имеете дело с классом. Большинство из них должно быть внутри метода класса, не считая переменных класса / констант.

Во-вторых, синтаксис немного отличается при добавлении метода класса, а не функции, к крюку.

 function widget( $args, $instance ) { add_filter('get_avatar', array($this,'remove_photo_class')); // the rest of your code } 

Я бы также отредактировал ваш обратный вызов, чтобы удалить себя:

 function remove_photo_class($avatar) { remove_filter('get_avatar', array($this,'remove_photo_class')); return str_replace(' avatar', $image_align , $avatar); } 

Или явно удалите его в конце метода widget :

 function widget( $args, $instance ) { add_filter('get_avatar', array($this,'remove_photo_class')); // the rest of your code remove_filter('get_avatar', array($this,'remove_photo_class')); } 

Или это может испортить вещи в других частях темы.

Вы не можете напрямую добавить в add_filter . Рассматривая первый подход, поместите строку кода

 add_filter('get_avatar', 'remove_photo_class'); 

внутри функции widget . То же самое можно сделать и для второго подхода.