如何以编程方式获取WooCommerce中的所有产品?

时间:2016-04-03 01:46:01

标签: php wordpress woocommerce

我想获取WooCommerce中的所有产品数据(产品图片,名称,价格,库存数量,可用性等)。我可以使用wp-query做到这一点吗?

5 个答案:

答案 0 :(得分:4)

这样您就可以通过wp_query获取所有产品:

global $wpdb;

$all_product_data = $wpdb->get_results("SELECT ID,post_title,post_content,post_author,post_date_gmt FROM `" . $wpdb->prefix . "posts` where post_type='product' and post_status = 'publish'");

如果您想要更多产品数据,那么它将是这样的:

$product = wc_get_product($product_id);
$product->product_type;
get_post_meta($prodyct_id, '_regular_price');
$product->get_available_variations();

答案 1 :(得分:1)

在构建查询时,将帖子类型设置为产品

$query->set('post_type', 'product');

这只会搜索woocommerce产品。

此外,如果您要创建主题,则可以从/wp-content/plugins/woocommerce/templates/目录中获取任何文件并将其放在/wp-content/themes/<yourTheme>/woocommerce内以覆盖任何woocommerce页面。

答案 2 :(得分:1)

感谢所有的回复。我已经解决了像波涛一样的问题

$full_product_list = array();
$loop = new WP_Query(array('post_type' => array('product', 'product_variation'), 'posts_per_page' => -1));

    while ($loop->have_posts()) : $loop->the_post();
        $theid = get_the_ID();
        $product = new WC_Product($theid);
        if (get_post_type() == 'product_variation') {

            // ****************** end error checking *****************
        } else {
            $sku = get_post_meta($theid, '_sku', true);
            $selling_price = get_post_meta($theid, '_sale_price', true);
            $regular_price = get_post_meta($theid, '_regular_price', true);
            $description=get_the_content();
            $thetitle = get_the_title();

        }
        // add product to array but don't add the parent of product variations
        if (!empty($sku))
            $full_product_list[] = array("PartyID" => (int) $party_id,"Description"=> $description,
                "ExternalNumber" => $theid, "ProductName" => $thetitle, "sku" => $sku,
                "RegularPrice" => $regular_price, "SellingPrice" => $selling_price,
                "ExternalProductCategoryId" => $cat_id, "ExternalProductCategoryName" => $cat_name);
    endwhile; 

答案 3 :(得分:0)

您可以在要显示所有产品信息的页面中编写此代码

<?php
            $args = array(
                'post_type'      => 'product',
                'posts_per_page' => 10
            );

            $loop = new WP_Query( $args );

            while ( $loop->have_posts() ) : $loop->the_post();
            echo '<br /><a href="'.get_permalink().'">' . woocommerce_get_product_thumbnail().' '.get_the_title().'</a>';
                global $product;
                //echo $product;
                echo $product->get_id();
                echo $product->get_name();
                echo $product->get_sale_price();
                echo $product->get_regular_price();
                echo $product->get_sku();
                echo $product->get_low_stock_amount();
                echo $product->get_review_count();
                echo $product->get_short_description();
                $ratting = $product->get_rating_counts();
                for($i = 0 ; $i < count($ratting); $i++) {
                    echo $ratting[i];
                }
            endwhile;

            wp_reset_query();
        ?>

答案 4 :(得分:0)

这是一个古老的问题;自2018年以来,使用WP_Query()的答案已过时。

请参阅我的答案here