当新订单进入

时间:2015-08-22 18:50:41

标签: php json wordpress rest woocommerce

我正在使用woocommerce rest api和PHP libray,我只是在网页上显示订单。

我希望在收到新订单时提供声音提醒。

我可以稍后处理声音,但是为了进行测试,我需要弄清楚如何检查是否有新订单。

随着api呼叫:

$new_order_count = $connect->orders->get_count();

只需返回一个包含订单数的整数,因此每次增加此int时我都需要做一些事情。

我已经绞尽脑汁在这周围,并且无法弄清楚我会怎么做。

2 个答案:

答案 0 :(得分:2)

您正在有效地询问有关如何检测系统更改的输入。通常有两种方法:轮询和推送。您提供的一点点解决方案与轮询类似。

  • 轮询:在某个时间间隔内进行测量,并将新测量值与旧测量值进行比较,看是否有变化。
  • 推动需要更紧密的集成:测量源必须告诉您何时发生变化。

要进行轮询,您需要在某处存储旧值。由于您使用的是PHP,因此您可以将其存储在数据库中,也可以将其存储在页面本身中;这取决于你正在做什么来触发民意调查(你正在使用什么样的间隔)。

一种解决方案涉及每次用户导航到新页面时检查订单计数。这是最简单的解决方案,因为您正在使用wordpress,但您需要找到一个位置来存储旧值(旧订单计数)。订单计数可以作为查询参数包含在每个链接中(很难正确),也可以存储在数据库中(更多涉及wordpress的内容)。

您可以使用AJAX和JavaScript计时器或间隔来轮询基于时间的间隔。这将是任意响应(您可以调整它以在指定的时间段内识别新订单),但重复的请求将是低效的。此外,如果用户在新订单到达之后但在轮询检测到之前导航,您还需要实施第一个解决方案的一部分或冒险错过新订单。此方法简化了旧值的存储,因为您可以将其保存在JavaScript变量中。

答案 1 :(得分:0)

因此,克服我的问题的一种廉价而讨厌的方法是使用eth html5音频元素,并在页面加载时检测到会话时使用自动播放标记回显元素。

示例:

PHP要求订单计数:

if(isset($_SESSION['order_count'])) {
    if ($new_order_count->count > $_SESSION['order_count']) {
        $_SESSION['order_alert'] = '<div class="alert alert-dismissible alert-success"><strong>New Order(s)</strong> We have new orders team! </div>';
        $_SESSION['order_count'] = $new_order_count->count;

    } else {
        unset($_SESSION['order_alert']);  
    }
}

检查order_count会话是否在页面加载时设置,如果是,它将从woocommerce获取订单计数并查看它是否大于会话中存储的当前计数,如果是,则创建新的警报会话并且使用新订单计数更新当前计数会话。

如果未检测到新订单,则触发else语句取消设置警报会话。

主页:

if(isset($_SESSION['order_alert'])) {
    echo $_SESSION['order_alert'];
    echo '<audio autoplay>
         <source src="alert.mp3" type="audio/mp3" />
      </audio>';
}