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

如何修改WP_Query获取含指定字段的WooCommerce产品JSON数据?

How to Get Custom Product Data as Dynamic JSON for Your Form

Hey there! Let's fix up your code so it returns exactly the product data you need (ID, category, price, tags, title) as a clean JSON array, plus give you some pointers on learning more about WordPress/WooCommerce queries.

First: Fix Your WP_Query Parameters

Your original code has a couple of syntax and structure issues that are throwing off the query:

  • The post_type value needs to be an array when specifying multiple types
  • posts_per_page and fields are top-level arguments, not part of tax_query (you can remove tax_query entirely if you don't need to filter by taxonomy right now)

Here's the corrected base query setup:

require_once('../../../../wp-load.php');

// Keep this only if you need to process POST data later
$post_data = $_POST;

$args = array(
    'post_type' => array('product', 'product_variation'), // Correct array format for multiple post types
    'posts_per_page' => -1, // Fetch all matching products
    'fields' => 'ids' // We'll use IDs to fetch full product data via WooCommerce functions
);

$product_query = new WP_Query($args);

Second: Extract Your Required Product Data

Since you're working with WooCommerce products, using WooCommerce's built-in functions will make fetching data like prices way more reliable (it automatically handles variations, sales prices, and other product-specific logic).

Loop through the query results, build an array of your needed data, then encode it to JSON:

$products_data = array();

if ($product_query->have_posts()) {
    while ($product_query->have_posts()) {
        $product_query->the_post();
        
        $product_id = get_the_ID();
        $product = wc_get_product($product_id); // Get the WooCommerce product object for easy data access
        
        // Fetch product categories
        $categories = get_the_terms($product_id, 'product_cat');
        $category_names = array();
        if ($categories && !is_wp_error($categories)) {
            foreach ($categories as $cat) {
                $category_names[] = $cat->name;
            }
        }
        
        // Fetch product tags
        $tags = get_the_terms($product_id, 'product_tag');
        $tag_names = array();
        if ($tags && !is_wp_error($tags)) {
            foreach ($tags as $tag) {
                $tag_names[] = $tag->name;
            }
        }
        
        // Assemble the data array for this product
        $products_data[] = array(
            'id' => $product_id,
            'title' => get_the_title(),
            'categories' => $category_names,
            'price' => $product->get_price(), // Handles regular, sale, and variation prices
            'tags' => $tag_names
        );
    }
    wp_reset_postdata(); // Reset post data to avoid conflicts with other queries
}

// Output the JSON with proper content type header
header('Content-Type: application/json');
echo json_encode($products_data);

Key Notes About This Code:

  • wc_get_product() is a core WooCommerce function that gives you access to dozens of product-specific methods (like get_regular_price(), get_sale_price(), or get_stock_status()) if you need to expand your data later.
  • We use get_the_terms() to fetch product categories and tags, then extract their names into a clean, usable array.
  • Adding header('Content-Type: application/json') ensures your frontend recognizes the response as valid JSON.

Learning Resources to Deepen Your Knowledge

  • WP_Query Basics: Start with mastering the Parameters section of the WP_Query docs—focus on post_type, posts_per_page, and fields first. Practice writing simple queries (e.g., fetch all blog posts) before adding filters or custom data extraction.
  • WooCommerce Product Data: Dive into the WC_Product class documentation. This is the standard way to work with product data in WooCommerce, as it handles all edge cases (like variable products or out-of-stock status) that raw post metadata doesn't.
  • Custom Query Tutorials: Look for tutorials focused on building dynamic data feeds with WordPress/WooCommerce (e.g., "Fetch WooCommerce products as JSON for frontend forms"). These will walk you through real-world use cases similar to yours.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 14:24:08