Intereting Posts
Некоторый код добавляется автоматически в заголовок моего сайта – что это? Автоматическое удаление комментария, если Содержит Кнопка Vue.js onclick не работает с версиями IE WP_Query orderby значение таксономии (числовое) Каков наилучший способ загрузки среды WP в поддомену моей многопоточной установки WordPress? Создание собственного шаблона Почему «страницы блога больше не отображаются» мешают моей пользовательской wp_query? Оптимизировать CPT-функцию с помощью цикла отображение виджета на флажке Как я могу получить статическое название на моей странице блога? Пользовательский виджет с использованием меню выбора get_categories Нужно немного изменить мою следующую страницу. Как создать пользовательскую форму поиска и обработчик? Предотвратить функцию от повторного запуска, когда сообщение в определенной категории получает другую категорию? Можно ли исключить определенные шаблоны страниц для определенной роли?

Фильтр содержимого не будет работать

Я пытаюсь отфильтровать свой контент и по совпадениям в потоке. Я хотел бы изменить мою структуру html, но мое правило действительно не применяется. У меня есть следующий фильтр, который ищет первое изображение сообщений и совпадение правил с контейнером css. str_replace работает, но str_replace не

 function imageFooter($content){ global $post, $posts; preg_match_all('/<a.href="(.*?)"><img.*?src="(.*?)".*?><\/a>/', $post->post_content, $matches); $to_search = $matches[0][0]; $replacement = '<div class="image_footer">'.$matches[0][0].'<span class="logo"></span></div>'; str_replace($to_search , $replacement, $post->post_content); return $content; } add_filter('the_content', 'imageFooter'); 

Solutions Collecting From Web of "Фильтр содержимого не будет работать"

Изменить,

 str_replace($to_search , $replacement, $post->post_content); 

к ..

 $content = str_replace($to_search , $replacement, $post->post_content); 

Вы не задали $content никому, поэтому он просто возвращал то же самое, что передавалось в функцию. Прочтите документ для str_replace . Вы должны иметь:

 $content = str_replace($to_search , $replacement, $post->post_content); 

Но почему вы работаете над $post->post_content ? Содержимое сообщения передается в фильтр. У вас даже есть параметр с именем $content который вы не используете. То, что вы делаете, может вызвать проблемы. Думать об этом.

На вашем сайте есть 4 фильтра, в том числе ваш.

  1. Использует $content
  2. Использует $content как измененный фильтром один, так как они «цепочки».
  3. Использует $content измененный двумя предыдущими фильтрами.
  4. Ваш фильтр использует $post->content который находится за пределами «цепочки». Вы только что уничтожили все предыдущие фильтры.

Кроме того, вы вообще не используете $posts .

Ваш код должен быть:

 function imageFooter($content){ preg_match_all('/<a.href="(.*?)"><img.*?src="(.*?)".*?><\/a>/', $content, $matches); $to_search = $matches[0][0]; $replacement = '<div class="image_footer">'.$matches[0][0].'<span class="logo"></span></div>'; $content = str_replace($to_search , $replacement, $content); return $content; } add_filter('the_content', 'imageFooter'); 

И вы должны быть предупреждены, что использование регулярного выражения для парсера HTML – очень рискованный бизнес. Легко ошибиться.