Woocommerce:在商店目录页面上显示产品变化描述

时间:2017-11-16 12:07:41

标签: php wordpress woocommerce product hook-woocommerce

我有一个类似的问题mentioned here,我希望在目录页面上显示变量产品的简短描述。

我正在使用WooCommerce Show Single Variations商业插件,但它没有显示简短描述。

在此之前,我使用了一些代码来显示商店页面上简单产品的描述,它看起来像这样:

add_action( 'woocommerce_after_shop_loop_item_title', 
'add_short_description', 9 );
function add_short_description() {
global $post;
$text = $post->post_excerpt;
$maxchar = 75; //максимальное кол-во символов

$text = preg_replace ('~\[[^\]]+\]~', '', $text ); //убираем шорткоды

//удаляем все html символы
//$text = strip_tags( $text);

// Обрезаем
if ( mb_strlen( $text ) > $maxchar ){
            $text = mb_substr( $text, 0, $maxchar );
            $text = preg_replace('@(.*)\s[^\s]*$@s', '\\1 ...', $text );
        }
echo "<span class='catalog-short-desc'>$text</span>";
}

如果您告诉我如何更改此代码,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

已更新:由于我没有,我不使用您的商业插件,因为您的问题不是那么清楚......有两种可能性:

1)您希望在woocommerce存档页面(如商店......)上添加显示(使用您的插件)的产品变体的简短描述(来自父变量产品),就像其他产品一样。

这应该是(未经测试,没有错误)

add_action( 'woocommerce_after_shop_loop_item_title', 'add_short_description', 9 );
function add_short_description() {
    global $post;

    // 1. Product variation
    if ($post->post_type = 'product_variation'){
        $post_parent_id = $post->post_parent; // Get the parent variable product ID
        $post_parent = get_post( $post_parent_id ); // Get the parent variable WP_Post object
        $text = $post_parent->post_excerpt; // Get the short description from the parent variable product
    } 
    // 2. Other cases (simple, variable …)
    else {
        $text = $post->post_excerpt;
    }

    $maxchar = 75; // Maximum number of characters

    $text = preg_replace ('~\[[^\]]+\]~', '', $text ); // Remove shortcodes

    // Remove all html symbols
    //$text = strip_tags( $text);

    // Crop
    if ( mb_strlen( $text ) > $maxchar ){
        $text = mb_substr( $text, 0, $maxchar );
        $text = preg_replace('@(.*)\s[^\s]*$@s', '\\1 ...', $text );
    }
    echo "<span class='catalog-short-desc'>$text</span>";
}

2)您希望在woocommerce存档页面(如商店......)上添加显示的产品变体描述(如您的插件),就像其他产品一样... 对于产品变体,简短说明没有'存在(它是空的) ...

这应该是(未经测试,没有错误)

// For Woocommerce versions 3+ only
add_action( 'woocommerce_after_shop_loop_item_title', 'add_short_description', 9 );
function add_short_description() {
    global $post, $product;

    // 1. Product variation
    if ( $product->is_type('product_variation') ){
        // Get the product variation description
        // short description doesn't exist for product variations
        $text = $product->get_description();

        // If the product variation description is empty, we get the parent short description
        if( empty( $text ) ){
            $parent_id = $product->get_parent_id(); // The parent variable product ID
            $parent_product = wc_get_product( $parent_id ); // The parent WC_Product object
            $text = $parent_product->get_short_description();
        }
    }
    // 2. Other cases (simple, variable …)
    else {
        $text = $product->get_short_description();
    }

    $maxchar = 75; // Maximum number of characters

    $text = preg_replace ('~\[[^\]]+\]~', '', $text ); // Remove shortcodes

    // Remove all html symbols
    //$text = strip_tags( $text);

    // Crop
    if ( mb_strlen( $text ) > $maxchar ){
        $text = mb_substr( $text, 0, $maxchar );
        $text = preg_replace('@(.*)\s[^\s]*$@s', '\\1 ...', $text );
    }
    echo "<span class='catalog-short-desc'>$text</span>";
}

代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。