Добавить описание соответствующих категорий товаров в описание товаров в Woocommerce

У меня возникают проблемы при добавлении описания категории для моих продуктов в конце каждого описания для каждого продукта на вкладке "Описание" под каждым элементом. Пока что моя функция (внизу) помещает ВСЕ описания категорий вместо одной категории, в которой фактически находится продукт.

Вот пример категории со страницей описания.

Пример страницы продукта с описанием (Начиная с: Истории Традиционные истории и легенды коренных американцев традиционно служили... ...)

Это код, который я использую для объединения двух функций. Это работает, чтобы добавить все описания категорий, но я пытаюсь сделать так, чтобы показывалось только одно соответствующее описание:

add_filter( 'the_content', 'customizing_woocommerce_description' );
function customizing_woocommerce_description( $content ) {

    // Only for single product pages (woocommerce)
    if ( is_product() ) {

        // The custom content
        $args  = array( 'taxonomy' => 'product_cat' );
        $terms = get_terms('product_cat', $args);

        $count = count($terms); 
        // if ($count > 0) {

            foreach ($terms as $term) {
                /*  echo $term->description;*/
                $custom_content = '<p class="custom-content">' . __($term->description, "woocommerce").'</p>';

                // Inserting the custom content at the end
                $content .= $custom_content;
            }
        // }
    }
    return $content;
}

https://pastebin.com/GHBxe23i

Пока что я реализую код в неразрушающем плагине php для wordpress.

1 ответ

Решение

Вы должны заменить в своем коде get_terms() от wp_get_post_terms() сюда:

add_filter( 'the_content', 'woocommerce_custom_product_description', 20, 1 );
function woocommerce_custom_product_description( $content ) {
    global $post;

    // Only for woocommerce single product pages
    if ( ! is_product() ) 
        return $content; // exit

    $terms =  wp_get_post_terms( $post->ID, 'product_cat' );
    if ( count( $terms ) == 0 ) 
        return $content; // exit

    foreach ( $terms as $term )
        $content .= '<p class="custom-content">' . $term->description . '</p>';

    return $content;
}

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

Другие вопросы по тегам