Добавьте do_shortcode в printf в дочерней теме WordPress.

Я пытаюсь сделать так, чтобы поле настройщика «Авторское право» отображало короткие коды.
Поле отображается с помощью footer.php, поэтому я могу переопределить исходный код в своей дочерней теме.
В коде используется printf, который извлекает входное содержимое из поле в параметрах Customizer, например:

<?php printf( wp_kses_post(__( '%s', 'slim' )), Slim_Opt::getOption( 'footer_copyright_text', 'Slim - eCommerce WP Theme' )); ?>

Я пытался добавить do_shortcode к wp_kses_post, а также ко всему содержимому printf, но это не сработало.
Я попытался заменить printf на echo do_shortcode, но это тоже не сработало.

Есть ли способ сохранить этот код для получения значения параметра из Customizer, а также для отображения любых шорткодов, которые могут находиться в пределах этого значения?


person somepaulo    schedule 22.11.2019    source источник
comment
Попробуйте это: <?php $footer_option = do_shortcode( Slim_Opt::getOption( 'footer_copyright_text', 'Slim - eCommerce WP Theme' ) ); printf( wp_kses_post(__( '%s', 'slim' )), $footer_option ); ?> Это сначала обработает поле настройщика, а затем передаст его в printf   -  person disinfor    schedule 23.11.2019
comment
Спасибо, @disinfor! Это прекрасно работает как с установкой переменной, так и без нее. Пожалуйста, опубликуйте это как ответ, чтобы я мог выбрать его как ответ!   -  person somepaulo    schedule 23.11.2019
comment
Добавлено как ответ! Я рад, что это работает!   -  person disinfor    schedule 24.11.2019


Ответы (1)


Чтобы shortcode заработало, его нужно сначала обработать из опции настройщика — или можно просто вывести опцию с помощью do_shortcode

  1. Вариант без переменной:
echo do_shortcode( Slim_Opt::getOption( 'footer_copyright_text', 'Slim - eCommerce WP Theme' ) );
  1. Или вы можете сохранить вывод в переменной:
<?php $footer_option = do_shortcode( Slim_Opt::getOption( 'footer_copyright_text', 'Slim - eCommerce WP Theme' ) ); 
printf( wp_kses_post(__( '%s', 'slim' )), $footer_option ); ?>

В любом случае работает, просто зависит от того, хотите ли вы передать его wp_kses_post().

person disinfor    schedule 24.11.2019