Задать вопрос
@maxnrg33
верстальщик

Почему не работает хук?

Хук:
function ul_ol_func( $content ) {
	$content = str_replace('<ul', '<ul class="ul-list"', $content);
	$content = str_replace('<ol', '<ol class="ol-list"', $content);
	return $content;
}
add_action( 'ul_ol_hook', 'ul_ol_func' );


В переменной $tblock_textarea у меня html текст

Выполняю хук так, но не работает, выводит пустое значение
<?php echo do_action('ul_ol_hook', $tblock_textarea); ?>
  • Вопрос задан
  • 576 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
Это не фильтр, а экшен. Делайте echo прямо в экшене вместо return. Отличия от фильтра - в концепции, и заключаются в том, что фильтр меняет данные и возвращает их, а экшен выполняет действие и ничего не возвращает.

Либо используйте add_filter \ apply_filters, если вам необходимо вернуть значение.
Ответ написан
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Дополню ответ Алексей Николаев конкретным кодом с комментами:

...
add_filter( 'ul_ol_hook', 'ul_ol_func' );


<?php echo apply_filters('ul_ol_hook', $tblock_textarea); ?>


1. Ваш коллбек изменяет данные, значит это должен быть фильтр.
2. Фильтр возвращает измененные данные, а не выводит их, значит надо делать echo или выводить другим способом.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы