在 Woocommerce 中随处显示产品标题中的总销售额

Show total sales in the product title everywhere in Woocommerce

我正在使用 woocommerce 建立一个艺术画廊。 每件产品的打印数量有限(例如:100)。 我正在寻找一种在产品标题中显示基于已售出印刷数量的当前印刷数量的方法,例如,如果已售出 20 张印刷品,则产品名称将为 "NAME OF PRINT - PRINT NUMBER 21"

到目前为止,我一直在网上搜索解决方案,但找不到正确的方法。

感谢任何帮助。

您可以挂接到 woocommerce 产品详细信息页面的 title

默认页面结构和挂钩你可以看here

remove_action('woocommerce_single_product_summary','woocommerce_template_single_title',5);
add_action('woocommerce_single_product_summary', 'woocommerce_title_with_sold',5);


function woocommerce_title_with_sold() {
?>
    <h1 itemprop="name" class="product_title entry-title">
        <span>
            <?php the_title(); ?> - <?php echo $units_sold = get_post_meta( get_the_ID(), 'total_sales', true ); ?>
        </span>
    </h1>
<?php
}

如果你想在任何地方展示你需要寻找 woocomerce hooks/filters/actions

已更新:以下代码将在单个产品页面和存档页面中显示产品销售数量:

// Single product pages
add_action( 'woocommerce_single_product_summary', 'custom_single_product_title', 2 );
function custom_single_product_title() {
    remove_action('woocommerce_single_product_summary','woocommerce_template_single_title', 5 );
    add_action('woocommerce_single_product_summary', 'product_title_custom', 5 );
}

// Shop and archives pages
add_action( 'woocommerce_shop_loop_item_title', 'custom_loop_product_title', 2 );
function custom_loop_product_title() {
    remove_action('woocommerce_shop_loop_item_title','woocommerce_template_loop_product_title', 10 );
    add_action('woocommerce_shop_loop_item_title', 'product_title_custom', 10 );
}

function product_title_custom() {
    global $product;

    $sales = $product->get_total_sales();
    $single_text = __( "PRINT NUMBER", "woocommerce" ) . ' ' . $sales;

    if( is_product() ) : // Single product pages
    ?>
        <h1 itemprop="name" class="product_title entry-title">
            <span><?php the_title(); ?></span> - <span><?php echo $single_text; ?></span>
        </h1>
    <?php
    else : // Loop product pages (shop and archives)
    ?>
        <h2 class="woocommerce-loop-product__title"><?php the_title(); echo "($sales)"; ?></h2>
    <?php
    endif;
}

在商品名称购物车和结帐页面中显示商品售出数量:

// Add to cart items names the total sales
add_filter( 'woocommerce_cart_item_name', 'custom_product_title_name', 20, 3 );
function custom_product_title_name( $cart_item_name, $cart_item, $cart_item_key ){
    // The product object from cart item
    $product = $cart_item['data'];
    $sales = $product->get_total_sales();
    $text = __( "PRINT NUMBER", "woocommerce" ) . ' ';

    return $cart_item_name . ' - ' . $text . $sales;
}

在项目名称中显示产品销售数量订单页面和电子邮件通知:

add_filter( 'woocommerce_order_item_name', 'add_single_excerpt_to_order_item', 10, 3 );
function add_single_excerpt_to_order_item( $item_name, $item, $is_visible ){
    $product = $item->get_product();
    $sales = $product->get_total_sales();
    $text = __( "PRINT NUMBER", "woocommerce" ) . ' ';

    return $item_name . ' - ' . $text . $sales;
}

要在admin order edit pages中显示产品销售数量,是不可能用同样的方式显示的…我必须在产品标题下单独一行:

add_action( 'woocommerce_before_order_itemmeta', 'total_sales_before_order_itemmeta', 10, 3 );
function total_sales_before_order_itemmeta( $item_id, $item, $product ){
    // Only on backend order edit pages
    if( ! ( is_admin() && $item->is_type('line_item') ) ) return;

    echo '<p><em>' .__( "Total sales" ) . ': ' . $product->get_total_sales() . '</em></p>';
}

代码进入活动 child 主题(或活动主题)的 function.php 文件。已测试并有效。