wordpress 未能在购物车woocommerce中的产品标题旁边显示2个以上的变体

yk9xbfzb  于 2023-11-17  发布在  WordPress
关注(0)|答案(2)|浏览(123)

我希望你回答
我使用钩子在购物车中的产品名称旁边显示变量

add_filter( 'woocommerce_product_variation_title_include_attributes', '__return_true' );

字符串
但如果一个产品有2个以上的变量,它将只显示前2个变量
true => product:变量1和变量2和变量3
false => product:变量1和变量2
路径:/wp-content/plugins/woologce/includes/data-stores/class-wc-product-variation-data-store-cpt.php

/*
|--------------------------------------------------------------------------
| Additional Methods
|--------------------------------------------------------------------------
*/

/**
 * Generates a title with attribute information for a variation.
 * Products will get a title of the form "Name - Value, Value" or just "Name".
 *
 * @since 3.0.0
 * @param WC_Product $product Product object.
 * @return string
 */
protected function generate_product_title( $product ) {
    $attributes = (array) $product->get_attributes();

    // Do not include attributes if the product has 3+ attributes.
    $should_include_attributes = count( $attributes ) < 3;

    // Do not include attributes if an attribute name has 2+ words and the
    // product has multiple attributes.
    if ( $should_include_attributes && 1 < count( $attributes ) ) {
        foreach ( $attributes as $name => $value ) {
            if ( false !== strpos( $name, '-' ) ) {
                $should_include_attributes = false;
                break;
            }
        }
    }

    $should_include_attributes = apply_filters( 'woocommerce_product_variation_title_include_attributes', $should_include_attributes, $product );
    $separator                 = apply_filters( 'woocommerce_product_variation_title_attributes_separator', ' - ', $product );
    $title_base                = get_post_field( 'post_title', $product->get_parent_id() );
    $title_suffix              = $should_include_attributes ? wc_get_formatted_variation( $product, true, false ) : '';

    return apply_filters( 'woocommerce_product_variation_title', $title_suffix ? $title_base . $separator . $title_suffix : $title_base, $product, $title_base, $title_suffix );
}


我注意到一件事:enter image description here
如果添加gender-one -> Blue -> Short到购物车,不显示Short产品标题,我必须创建2个变量来显示Short
性别一->蓝色->短
性别一->蓝色->高

vaqhlq81

vaqhlq811#

您必须创建一个函数以您想要的方式返回标题,并且必须将该函数与过滤器woocommerce_product_variation_title挂钩
基本上,wc_get_formatted_variation( $product, true, false )这个调用返回所有属性的列表,你可以创建类似的函数来只返回前两个属性,然后你可以在代码中使用这个函数。

bnlyeluc

bnlyeluc2#

我使用这个函数输出所有的属性,并在一个span中对它们进行额外的 Package ,这样我就可以隐藏它们在购物车页面上的显示

add_filter('woocommerce_product_variation_title', 'vs_product_variation_title_callback', 10, 4);

function vs_product_variation_title_callback($variation_title, $product, $title_base, $title_suffix)
{
    $title_base  = get_post_field('post_title', $product->get_parent_id());
    $title_suffix =  wc_get_formatted_variation($product, true, false);

    return $title_base . '<span> - ' . $title_suffix . '</span>';
}

字符串
我有3种变化的产品,它们在使用时显示add_filter( 'woocommerce_product_variation_title_include_attributes', '__return_true' );
不幸的是,我不知道您的问题可能是什么,但我希望这个自定义函数将帮助您,或那些像我一样偶然发现这个问题的人,用属性配置名称

相关问题