Как вызвать настраиваемые поля объектов публикации (продуктов) с помощью шорткодов в сообщениях - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь показать «избранные продукты» в сообщениях блога. Эти рекомендуемые продукты должны быть выбраны с помощью настраиваемых полей постов объектов в бэкэнде для каждого поста.

Я написал, что, по моему мнению, должно быть PHP - где я ошибаюсь? Когда я пытаюсь использовать шорткод, код не появляется (но текст шорткода не отображается, поэтому он определенно добавлен). Спасибо :)

    <?php

add_shortcode('featuredproducts' , 'printfeaturedprod');

function printfeaturedprod(){
    
    $html = '';

$instruments = get_field('featuredprod');
if( $instruments ):
    
    $html .=   '<div class="featuredproducts">';
    $html .=   '<h2 style="font-size:18px; font-family:poppins;">Featured in this video</h2>';
    
    foreach( $instruments as $instruments ): 
        $permalink = get_permalink( $instruments->ID );
        $title = get_the_title( $instruments->ID );
        $product = wc_get_product( $instruments->ID );
        $price = $product->get_price();
        $featured_img_url = get_the_post_thumbnail_url($instruments->ID, 'full');
        
        $html .=   '<div class="featuredproduct">';
        $html .=   '<img class="featuredproductimg" src="' . $featured_img_url . '">';
        $html .=   '<div class="proddetails">';
        $html .=   '<a class="producttitle" href="' . $permalink . '"><?php echo esc_html( $title ); ?></a>';
        $html .=   '<br><span class="productprice">£' . $price . '</span>';
        $html .=   '</div>';
        $html .=   '</div>';
    
    endforeach;
        
    $html .=   '</div>';
    endif;
}

1 Ответ

0 голосов
/ 07 августа 2020

Вы построили свой HTML в переменной $html, но тогда вы ничего не делаете с ним. Шорткод не знает автоматически, что вы хотите отобразить переменную $ html, поэтому вам нужно return (или echo) в конце до завершения функции:

add_shortcode('featuredproducts' , 'printfeaturedprod');

function printfeaturedprod(){        
    $html = '';

    /* your code here... */

    return $html;
}

Ссылка : См. Документацию add_shortcode WP

...