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