Задать вопрос
RockerOne
@RockerOne
Учусь верстать сайты

Wordpress не обрабатывает шорткоды, выводится текст, что нужно сделать?

Суть такова задачи. Есть поля как кастомные сделанные при помощи плагина Advanced Custom Fields, так и стандартные.

В поля вводятся шоткоды и исполнительные php коды, во всех полях шорткоды и исполнительные php файлы преобразуются, кроме
<div><?php the_field('textito'); ?></div>.
В само поле "textito" вписываются [exec]echo date(‘Y’);[/exec] !!!! и [nggallery id=1]

вот что используется в functions.php

/* чтобы вставить код php в статьях/страницах WordPress, поставьте шоркод: [exec]код[/exec] */
function exec_php($matches){
    eval('ob_start();'.$matches[1].'$inline_execute_output = ob_get_contents();ob_end_clean();');
    return $inline_execute_output;
}
function inline_php($content){
    $content = preg_replace_callback('/\[exec\]((.|\n)*?)\[\/exec\]/', 'exec_php', $content);
    $content = preg_replace('/\[exec off\]((.|\n)*?)\[\/exec\]/', '$1', $content);
    return $content;
}
add_filter('the_content', 'inline_php');
add_filter('the_content',  'do_shortcode' );
add_filter('category_description', 'inline_php');
add_filter('category_description',  'do_shortcode' );
add_filter('bottom_description', 'inline_php');
add_filter('bottom_description', 'do_shortcode' );
add_filter('textito', 'do_shortcode', true );
add_filter('textito', 'inline_php', true);
  • Вопрос задан
  • 944 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
deniscopro
@deniscopro Куратор тега WordPress
WordPress-разработчик, denisco.pro
А так?
<div><?php echo do_shortcode(get_field('textito')); ?></div>

Ещё можно попробовать покопаться в хуках ACF. Должен подойти acf/format_value_for_api (с пятой версии переименован в acf/format_value)
function denisco_acf_format_value($value, $post_id, $field) {    
    return do_shortcode($value);
}

add_filter('acf/format_value_for_api', 'denisco_acf_format_value', 10, 3);

В этом случае, по идеи, будет работать и просто в виде <div><?php the_field('textito'); ?></div>.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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