Виджет изображения -> Динамический -> Шорткод -> Нет вывода - PullRequest
0 голосов
/ 22 марта 2019

Я использую Elementor Pro и хочу отобразить изображение с помощью специального шорткода (https://docs.elementor.com/article/449-dynamic-shortcode):

Но это не работаетПросто ничего не отображается. Ни в редакторе, ни во внешнем интерфейсе. Также нет, если я уберу скобки [...] вокруг шорткода и попробую только brand_banner.

Он не производит никакихВывод DOM во внешнем интерфейсе, просто пустой elementor-widget-wrap div:

<div class="elementor-element elementor-element-4f1547ad elementor-column elementor-col-50 elementor-inner-column" data-id="4f1547ad" data-element_type="column">
    <div class="elementor-column-wrap  elementor-element-populated">
        <div class="elementor-widget-wrap">
        </div>
    </div>
</div>

Однако, если я использую простой виджет текстового редактора и вставляю шорткод, он работает как положено:

ДОМ:

<div class="elementor-element elementor-element-37728dd elementor-widget elementor-widget-text-editor" data-id="37728dd" data-element_type="widget" data-widget_type="text-editor.default">
    <div class="elementor-widget-container">
        <div class="elementor-text-editor elementor-clearfix">
            <img src="https://some.domain.com/wp-content/uploads/banner-a.jpg"></div>
        </div>
    </div>
</div>

Это код для шорткода:

public function shortcode_brand_banner( $atts )
{
    $brand = $this->getRandomBrandFromPool();
    $variantIndex = 1;
    $variantLabel = [ '0', 'a', 'b', 'c' ];
    // Return the rendered image HTML.
    return ( types_render_field( 'image-brand-' . $variantLabel[ $variantIndex ], [ 'post_id' => $brand->post->ID ] ) );
}

Я подумал, что это может бытьпотому что он не ожидает HTML-код отображаемого изображения, а только URL-адрес изображения, поэтому я изменил код на этот, но он также не работает:

public function shortcode_brand_banner( $atts )
{
    $brand = $this->getRandomBrandFromPool();
    $variantIndex = 1;
    $variantLabel = [ '0', 'a', 'b', 'c' ];
    // Only return image URL like "https://some.domain.com/wp-content/uploads/banner-a.jpg"
    $image = get_post_meta( $brand->post->ID, 'wpcf-image-brand-' . $variantLabel[ $variantIndex ] )[ 0 ];
    return ( $image );
}

Что я здесь не так делаю? Как можноЛи я отобразить изображение с помощью динамического шорткода?

1 Ответ

0 голосов
/ 07 июля 2019

Чтобы закрыть этот вопрос, короткая история: виджет изображения никогда не должен был поддерживать функцию «Shortcode», потому что внутренне функция ожидает массив, который Shortcode не может вернуть.

Функция шорткода теперь удалена из виджета «Изображение».

См .: https://github.com/elementor/elementor/issues/7730

...