定期更新WooCommerce产品价格

时间:2017-07-24 作者:PUncle

我一直在考虑一个WordPress/WooCommerce项目,该项目将根据每公斤所述材料的外部价格按重量销售材料;但我对如何完成结帐过程的理解存在脱节。

方案A:

在WooCommerce中,每种产品都有重量,但没有硬性定价。价格将使用外部提要每隔30秒左右在前端产品页面上设置一次。

这将通过JavaScript在浏览器中完成,但我如何“锁定”并在WooCommerce中使用该价格来告知结帐时支付的实际硬价格?

也许可以放一块饼干?我不知道这个过程的其余部分会怎样。

方案二:我以某种方式每隔30秒在服务器端用PHP运行一次定价更新,然后每隔30秒通过Ajax调用从前端的WooCommerce查询定价信息。

如何在服务器端定期更新价格?我假设有一个钩子来设定价格,但粗略搜索无法找到任何钩子。是否每30秒从cron运行一个PHP文件?

从后端如此频繁地运行价格更新是否合理?

我想也许我更喜欢第一个想法,因为我对JavaScript比PHP更熟悉,但我担心A计划的安全影响——假设它甚至可以在结账时使用前端设置的价格——因为用户肯定可以操纵价格。

或者,我是否完全错了?

我会感激你的任何想法,因为我的想法似乎并不完整!

非常感谢阅读!

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

我将采用如上所述的B计划。原因是我不想在浏览器中使用JS来操纵价格。另外,我不知道如何从浏览器中设置JS的价格!

计划是让cron作业定期运行一个脚本,该脚本在产品和update_post_meta() 在每个上。类似于:

<?php
$args = array(
  \'post_type\' => \'product\',
  \'posts_per_page\' => -1
);
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
  while ( $loop->have_posts() ) : $loop->the_post();
    global $product;

    $value = 840;

    update_post_meta($product->get_id(), \'_regular_price\', (float)$value);
    update_post_meta($product->get_id(), \'_price\', (float)$value);

  endwhile;
}
wp_reset_query();
剩下的唯一问题是性能,但我完全没有主意了。如果有人能看到我错过的任何东西,请插话!

结束

相关推荐