Intereting Posts
Как организовать иерархическую структуру в пользовательском типе сообщений с таксономией (например, с категориями) Страницы таксономии, остановить их индексирование или сгенерировать? Команда SQL для восстановления обработанных комментариев Как переопределить URL-адрес emoji? разделение столбцов на две колонки WordPress Media Library – Используемое пространство загрузки Как загрузить JS для определенного размера экрана с помощью wp_enqueue_script? Попытка удалить кнопку загрузки на WordPress Native Video Player? Пользовательский тип сообщения вызывает ошибку: предупреждение: call_user_func_array () get_template_part не выводит все данные WordPress в подкаталоге другой среды WordPress не работает Удалить навигацию из заголовка в пользовательском шаблоне страницы Пользователь Есть ли недостатки, чтобы не использовать get_header (), get_sidebar и get_footer ()? Включить add_post_meta в плагин

Вставьте поле с PREG_REPLACE – странное поведение

Я пытаюсь вставить настраиваемое поле (из плагина Advanced Custom Fields), и мне нужно поместить его в div, который я обертываю вокруг img, прямо перед img-тегом.

Таким образом, в основном это результат, который я хочу (я использую the_field('description') здесь, чтобы сделать его более чистым):

 <div class="the-content"> <div class="owl-wrapper"> <div class="owl-item"> [ the content from the_field() ] <img src"http://imagesource"> </div> </div> </div> 

Но вот что происходит:

 <div class="the-content"> [ the content from the_field() ] <div class="owl-wrapper"> <div class="owl-item"> <img src"http://imagesource"> </div> </div> </div> 

Т.е. контент из поля вставлен сверху, а не в div, который я размещаю. Разве это не странно?

Вот мой код:

 function wrapImagesInDiv($content) { if ( in_category( 'projects' ) ) { $pattern = '/(<img[^>]*class=\"([^>]*?)\"[^>]*>)/i'; $replacement = ' <div class="owl-wrapper"> <div class="owl-item $2"> '.the_field('description').' $1 </div> </div>'; $content = preg_replace($pattern, $replacement, $content); } return $content; } add_filter('the_content', 'wrapImagesInDiv'); 

Вы должны использовать здесь функцию get_field вместо поля the_field .

 function wrapImagesInDiv($content) { if ( in_category( 'projects' ) ) { $pattern = '/(<img[^>]*class=\"([^>]*?)\"[^>]*>)/i'; $replacement = ' <div class="owl-wrapper"> <div class="owl-item $2"> '.get_field('description').' $1 </div> </div>'; $content = preg_replace($pattern, $replacement, $content); } return $content; } add_filter('the_content', 'wrapImagesInDiv'); 

Функция get_field возвращает значение, но the_field печатает значение.