在Woocommerce

时间:2018-03-18 12:43:53

标签: php wordpress woocommerce product stock

我正在建立一个带有woocommerce的艺术画廊。 每种产品的打印数量有限(例如:100)。 我正在寻找一种在产品标题中显示的方式,即根据已售出的打印数量显示当前打印的数量,例如,如果销售的打印数量为20,则产品名称为" NAME打印 - 打印数字21"

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

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您可以访问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钩子/过滤器/动作

答案 1 :(得分:1)

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

// 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;
}

要在管理订单编辑页面中显示产品销售数量,无法以相同的方式显示...我必须在单独的行中位于产品标题下:

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>';
}

代码放在活动子主题(或活动主题)的function.php文件中。经过测试和工作。