You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在自定义WordPress主题中访问WooCommerce产品及全局产品对象?

Working with WooCommerce Products in Custom WordPress Themes

Great question! Let's break this down clearly—accessing WooCommerce product data in custom themes is a common task, but it depends a lot on the context you're working in.

1. How to Access WooCommerce Products in a Custom Theme

There are a few different scenarios you'll run into, each with a straightforward approach:

On Single Product Pages

WooCommerce automatically sets up a global $product object here, so you can use it directly. For example:

// Get product name
echo $product->get_name();

// Get regular price
echo $product->get_regular_price();

// Check if the product is in stock
if ($product->is_in_stock()) {
    echo "Available!";
}

If for some reason the global object isn't available, you can also fetch it using the current post ID:

$product = wc_get_product(get_the_ID());

On Product Archive Pages (Shop, Category, Tag Pages)

In these loops, you'll want to grab the product object inside the WordPress post loop:

if (have_posts()) :
    while (have_posts()) : the_post();
        // Get the product object
        $product = wc_get_product(get_the_ID());
        
        // Use product data
        echo '<h3>' . $product->get_name() . '</h3>';
        echo '<span class="price">' . $product->get_price_html() . '</span>';
    endwhile;
endif;

Fetch a Specific Product Anywhere in the Theme

If you know the product's ID, you can pull its data from anywhere (as long as WooCommerce is active):

// Replace 123 with your actual product ID
$product = wc_get_product(123);

if ($product) {
    echo $product->get_description();
    echo $product->get_image(); // Displays the product's featured image
}

Always wrap this in a check for $product to avoid errors if the ID is invalid or WooCommerce isn't active.

2. Can You Call the Global Product Object in Any Theme PHP File?

Short answer: No, not in every file. The global $product object is only available when WooCommerce has loaded a product context. That means:

  • It works on single product pages
  • It works inside product archive loops
  • It works in WooCommerce template hooks (like woocommerce_before_single_product or woocommerce_after_shop_loop_item)

If you try to use global $product in a file like header.php on your homepage, or single.php for a blog post, the variable will be null—there's no product context there to populate it.

If you need product data in a non-product context, use the wc_get_product($product_id) method mentioned earlier instead. And always add a check to make sure WooCommerce is active first:

if (class_exists('WooCommerce')) {
    $product = wc_get_product(123);
    // Rest of your code
}

内容的提问来源于stack exchange,提问作者Johnny Rockex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:10:53