данные поля acf в do_shortcode не заполняются - PullRequest
0 голосов
/ 26 апреля 2018

Я использую плагин WordPress Advanced Custom Field. У меня есть встроенная кнопка загрузки и шорткод. Теперь я использую поля ACF для заполнения шорткода загрузки btn. Кажется, все работает, и кнопка загрузки отображается, как ожидалось. Единственная проблема заключается в том, что поля ACF не заполняются в шорткоде, а отображаются вне шорткода.

<?php

  if (get_field('dn_btn_url1')) { 

    echo do_shortcode( '[download_btn url="'.get_field('dn_btn_url1').'" filename="'.get_field('dn_btn_txt1').'"]' );

  }

?>

Код без оператора if работает должным образом, но не скрывает шорткод.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Вы можете сделать это с помощью функции sprintf, попробуйте один раз

<?php 
  if(get_fiedl('dn_btn_url1')) {
  $url = get_field('dn_btn_url1');
  $filename = get_field('dn_btn_txt1');
  $shortcode = sprintf(
  '[download_btn url="'.$url.'" , 
  filename="'.$filename.'"]');
  echo do_shortcode( $shortcode );
?> 
0 голосов
/ 26 апреля 2018

Функция get_field получает идентификатор сообщения из глобального объекта $post, поэтому при передаче в функцию шорткода кажется, что он не может получить правильный идентификатор сообщения. Попробуйте поместить свой URL из поля в переменную, чтобы он уже был передан через функцию в функцию шорткода.

Попробуйте это:

<?php

  if (get_field('dn_btn_url1')) {

    $url = get_field('dn_btn_url1');

    echo do_shortcode( '[download_btn url="' . $url . '" filename="' . $url . '"]' );

  }

?>
...