【问题标题】:Conditional logic for woocommerce variable productwoocommerce 变量产品的条件逻辑
【发布时间】:2021-05-20 12:48:38
【问题描述】:

我的产品有两种组合:

  1. OS = Mac -> 下拉菜单应该有 2 个选项“Macbook Air”、“Macbook Pro”。
  2. OS = Windows -> Dropdown 应该有这 2 个,而不是“Surface Book”、“Lenovo ThinkBook”。

我有一个标签变体,您可以在其中选择操作系统“Mac”或“Windows”。 根据客户选择的内容,应该向他显示与此相关的选项。

现在我有一个包含所有 4 种型号“Air、Pro、Surface、Thinkbook”的下拉列表..

因此,如果客户在第一个变体中选择“Mac”,他应该只能选择“Macbook Air”,而在下一个变体中选择“Macbook Pro”。

这是否可以通过functions.php而不使用任何其他wordpress插件来实现?

【问题讨论】:

  • 是的,这是可能的……但我们希望您在问题中提供您自己的真实代码尝试。请注意,StackOverFlow 不是免费的编码服务。
  • 对不起,我不知道该怎么做,所以我希望有人知道。
  • 一些模板自定义需要一些 javascript (jQuery):这将允许您按照您的要求进行多步操作。

标签: php jquery wordpress woocommerce product-variations


【解决方案1】:

不,你不能用functions.php来完成它。 PHP 是一种服务器端语言,这意味着它只能在页面加载之前处理逻辑。您需要一种客户端语言(例如 Javascript)来处理此问题而无需重新加载页面,这很好,因为它可以很好地与 Wordpress 配合使用。这是一个最小的示例演示如何在 Vue 中执行此操作,这是一个常见的 JS 框架,也是我最常与 Wordpress 一起使用的框架。您可以阅读Vue documentation 并快速了解其工作原理。

HTML:

<div id="container">
    <select name="os" id="os" @change="setOs">
        <option value="">Select OS</option>
        <option value="mac">Mac</option>
        <option value="windows">Windows</option>
    </select>
    <select name="computer" id="computer" @change="setComputer" v-if="os">
        <option value="">Select Computer</option>
        <option value="air" v-if="os === 'mac'">Macbook Air</option>  
        <option value="pro" v-if="os === 'mac'">Macbook Pro</option>
        <option value="surface" v-if="os === 'windows'">Surface Book</option>
        <option value="thinkbook" v-if="os === 'windows'">Lenovo Thinkbook</option>
    </select>
    <p v-if="computer">Selected computer: {{computer}}</p>
</div>

JS:

var app = new Vue({
  el: "#container",
  data: {
    os: null,
    computer: null
  }, 
  methods: {
    setOs: function(e){
      this.os = e.target.value;
    }, 
    setComputer: function(e){
      this.computer = e.target.value;
    }
  }
})

您可以查看this pen 以了解它的实际效果。

【讨论】:

  • 对于信息,WooCommerce / WordPress 不使用例如 Vue.js 库。他们使用默认包含的 JQuery。
  • 正确,但您可以自己添加。将它从 CDN 中取出并像任何其他脚本一样将其加入队列。你也可以用 jQuery 完成同样的事情,只是看起来有点不同。
猜你喜欢
  • 2019-03-10
  • 1970-01-01
  • 2016-09-13
  • 1970-01-01
  • 1970-01-01
  • 2017-10-30
  • 1970-01-01
  • 2018-12-26
  • 1970-01-01
相关资源
最近更新 更多