以编程方式插入的WooCommerce产品价格不会显示在单一产品页面中

时间:2019-09-19 作者:Shaad Amin

我正在尝试用简单的html DOM来获取价格,并将其设置为Woocommerce中的常规产品价格。

这是我的实际代码:

//Starting scrape
$html = file_get_html(\'http://sitenam.com/page-1/\');
$price = $html->find(\'span[class="price"]\', 0)->innertext;
//Starting post
$post = array(
    \'post_author\' => 1,
    \'post_content\' => \'Content Here\',
    \'post_status\' => "publish",
    \'post_title\' => "Product Title Here",
    \'post_parent\' => "product-title-here",
    \'post_type\' => "product",
);

$post_id = wp_insert_post( $post, $wp_error ); 

wp_set_object_terms( $post_id, \'simple\', \'product_type\' );  

add_post_meta( $post_id, \'_regular_price\', $price );
如下图所示,产品价格确实得到了节约:

Product Price

但真正的问题是,产品价格没有显示在前端。以下是屏幕截图:

Product Price Not showing

现在在管理编辑产品页面上,如果我单击“更新”按钮,那么价格将显示在前端产品页面上。

如何从代码中自动化此过程,而不必进入后端保存产品数据?

1 个回复
最合适的回答,由SO网友:LoicTheAztec 整理而成

使用尝试以下操作WC_Product 对象和方法:

// Starting scrape
$html = file_get_html(\'http://sitenam.com/page-1/\');

$price = (float) $html->find(\'span[class="price"]\', 0)->innertext;

// Saving the new product
$post_id = wp_insert_post( array(
    \'post_author\' => 1,
    \'post_content\' => \'Content Here\',
    \'post_status\' => "publish",
    \'post_title\' => "Product Title Here",
    \'post_parent\' => "product-title-here",
    \'post_type\' => "product",
) ); 

// Setting the product type
wp_set_object_terms( $post_id, \'simple\', \'product_type\' );  

// Get the WC_Product Object instance
$product = wc_get_product( $post_id );

// Set the product active price (regular)
$product->set_price( $price );
$product->set_regular_price( $price ); // To be sure

// Save product data (sync data and refresh caches)
$product->save();
这一次,产品价格应显示在前端。

相关推荐