【发布时间】:2022-01-11 18:41:30
【问题描述】:
我绝望了,花了2天谷歌搜索并尝试了各种方法来做到这一点,但没有成功。
我想做什么。
我想将一些功能从我的主题移到插件中。我现在有一个带有一些重写规则的自定义页面,以允许将查询变量传递给页面本身(这意味着根据传递的变量显示不同的数据)。我也有 4-5 个 Ajax 调用在单击或文档就绪时运行。随着转向插件,我想优化的一件事是在 Ajax 调用中使用这些查询变量,还为每个调用共享一些函数。我更愿意将 Ajax 挂钩的所有功能传递给方法,而不是在 Ajax 函数中进行任何数据检索和计算。
所以我的一般想法是这样做:
- 有一个插件本身的类来创建重写规则、排队脚本和样式。
- 有一个用于处理 HTML 模板的类
- 有一个类用于处理 Ajax 调用/可能还可以从 db 中检索数据
- 或者还有一个单独的类用于数据检索和其他功能
现在我不得不承认我对一般类和插件也是新手。
我试图做的事情:
- 在“init”上加载插件
- 添加重写规则,注册查询变量
- 如果页面名称匹配 - 入队脚本
- 获取查询变量并将其设置为类变量
- 根据需要加载html模板文件
我遇到的问题是管理 Ajax 调用。如果我在数据检索类中添加 Ajax 挂钩,那么该类会在每次 Ajax 调用时启动,我无法设置类变量。如果我在单独的 Ajax 类中添加 Ajax 钩子,那么我无法共享 var(或者我不知道如何共享)。
所以我正在寻求帮助。我应该如何管理我的 Ajax 调用才能在其方法中使用 Class var?也许我在使用 Classes 时会从错误的一面走向这一切?
我希望我说清楚了。
【问题讨论】:
-
现在我在想我应该为每个 Ajax 调用功能创建类并将其用作原始类的扩展(从而继承变量)?
-
也许澄清问题:如果我在模板调用期间添加 wp_ajax 钩子,那么它们就不起作用(响应为 0)。所以我知道我需要在此之前添加它们。这样做意味着原始类变量(使用 get_query_var)尚不可用/未设置。
-
如果我对其他 SO 问题的一个答案理解正确,Ajax 调用与正在运行的类完全分离,这意味着如果 ajax 函数在其他类中,则当 ajax 调用时,该类会从头开始调用制成。这就是他们不能共享变量的原因。