Разрешить шорткоды в описании вариантов товара в Woocommerce - PullRequest
0 голосов
/ 14 ноября 2018

Я хотел бы использовать поле шорткода pods внутри описания продукта переменной woocommerce, но по умолчанию поле описания переменной не поддерживает шорткоды.

Описание варианта хранится в массиве woocommerce_available_variation , поэтому я не могу просто вызвать функцию do_shortcode ($ вариация).

Я пытаюсь разрешить короткие кодыв этом поле, используя следующий код:

add_filter( 'woocommerce_available_variation', 'shortcode_variation_description');

function shortcode_variation_description( $variation ) {
$variation['variation_description'] = do_shortcode( $variation['variation_description'] );
return $variation;

Но это не работает.

Кто-нибудь, чтобы выяснить, что я делаю неправильно?

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Вы можете определить свой собственный шорткод, см. Документацию.Вы можете скопировать / вставить код, потому что он заключен в класс, чтобы не вызывать фатальную ошибку из-за двойного объявления.

Но шорткод не работает таким образом:

function shortcode_handler($atts) {
  //code goes here
 }
add_shortcode("name_of_shortcode","shortcode_handler');
0 голосов
/ 14 ноября 2018

При использовании вашего кода это работает.Для проверки я использовал короткий код Woocommerce [products] в описании варианта следующим образом:

Вмененный текст: (где 37 - это действительно простой идентификатор продукта):
"Это описание с коротким кодом ... [products ids =" 37 "] Как вы можете видеть, этот шорткод обнаруживается и отображается."

И я получаю это отображение:

enter image description here

Так что это работает по-настоящему.Я слегка внес небольшие изменения в эту версию кода (ваша работа тоже) :

add_filter( 'woocommerce_available_variation', 'variation_description_allow_shortcodes', 10, 3 );
function variation_description_allow_shortcodes( $variation_data, $product, $variation ) {
    $variation_data['variation_description'] = do_shortcode( $variation_data['variation_description'] );

    return $variation_data;
}

Код помещается в файл function.php вашей активной дочерней темы (активной темы).Проверено и работает.

...