在提交wordpress

时间:2017-11-08 15:53:12

标签: javascript php wordpress

这就是我现在拥有的!。

主题/ deliverHours.js:

更新

   window.onload = function () {
    getHour= new Date().toLocaleTimeString("en-US",{timeZone:"America/New_York",hour12: false});
    getDay= new Date().toLocaleTimeString("en-US",{timeZone:"America/New_York",hour12: false,weekday:'short'});
    day  = getDay.split(' ');
    arrayDate = getHour.split(':');
  document.getElementById('shipping_method_0_local_pickup8').onclick=function() {
        if(document.getElementById('shipping_method_0_local_pickup8').checked){
            console.log('local Pickup!');
            console.log(getDay);
            if(!(arrayDate[0] >= 7 && arrayDate[0] <= 16 && day[0] == 'Sun')) {
                        document.getElementById('msg').innerHTML = "Sorry,We are Closed";
              document.getElementById('checkOut').disabled = true
                }else{
          document.getElementById('checkOut').disabled = false
          console.log('enjoy your food');
        }
        }
    } 

    document.getElementById('shipping_method_0_flat_rate1').onclick=function(){
        if(document.getElementById('shipping_method_0_flat_rate1').checked){
            console.log('flat rate!');
            console.log(getDay);

          if(!(arrayDate[0] >= 7 && arrayDate[0] <= 16 && day[0] == 'Sun')) {
                      document.getElementById('msg').innerHTML = "sorry,we are closed. "
                    document.getElementById('checkOut').disabled = true
                  }else{
          document.getElementById('checkOut').disabled = false
          console.log('enjoy your food');
        }
}
}
}

主题/ function.php:

function deliver_business_hours(){
   wp_register_script('deliverHours', plugins_url('deliverHours.js'), array(),'1.0', true);

wp_enqueue_script('deliverHours');
}




add_action( 'wp_enqueue_script', 'deliver_business_hours');

Lorem Ipsum只是印刷和排版行业的虚拟文本。自16世纪以来,Lorem Ipsum一直是业界标准的虚拟文本,当时一台未知的打印机采用了类型的厨房,并将其拼凑成一个类型的样本书。这段文字没用......

应该正常工作吗?。

1 个答案:

答案 0 :(得分:1)

对于初学者来说,这是一个不幸的常见问题。让我们一起来看看为什么这不起作用:

  1. 访问结帐页面时,用户的浏览器会向服务器发送包含任何相关Cookie等的请求。
  2. 服务器开始执行php(a.k.a. WordPress),最终你的小函数将被执行。
  3. 您的echo会将字符串中的所有内容注入要发送回用户的html。
  4. 用户的浏览器会看到javascript并开始执行。在javascript中,浏览器会看到这个奇怪的标记<?php>浏览器不知道如何执行php。他们的默认设置是简单地忽略他们不理解的任何内容。这就是为什么它不起作用,通过回应php代码,你已经告诉浏览器做了它没有做的事情&# 39;理解。
  5. PHP是服务器端语言。如果要编写php,必须在HTTP请求过程中由服务器执行。如果您需要在客户端执行某些操作,则必须使用所有javascript编写。

    所以这给你留下了两个选择:

    1. 重写所有由JS处理的逻辑。
    2. 编写最少量的JS以回调服务器以在PHP中处理。
    3. 在您的情况下,我认为一些javascript应该能够通知客户您的交货​​时间。

      关于编程风格的附注:

      确实不应该回复任何html标记,尤其是<script><style>标记。您应该有单独的.js和.css文件,然后将这些文件包含在html文档中。 WordPress提供了一个方便的功能:wp_enqueue_script,它将以适当的方式为您完成此任务。

      更新:

      对于PHP:您需要将单选按钮放入提交的表单中。可能使用适当的钩子/过滤器进行woocommerce。之后,可以在$_POST['shipping_method']提交时访问该值。

      对于JS:Here是关于从浏览器获取特定于时区的日期时间的问题。看起来这是一个非常本地的网上商店,所以我提到实例化javascript的Date对象获取当前的本地日期时间。所以:

      var now = new Date();
      var hour = now.getHours();
      var day = now.getDay();
      

      当你在php中使用它们时,应该得到你的时间和日期。