Wordpress 插件类和 Ajax
Posted
技术标签:
【中文标题】Wordpress 插件类和 Ajax【英文标题】:Wordpress Plugin Classes and Ajax 【发布时间】: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 调用时,该类会从头开始调用制成。这就是他们不能共享变量的原因。 【参考方案1】:是的,所以问题正如我在 cmets 中提到的问题:wp_ajax 将类作为自己的实例启动,因此除了通过 Ajax 请求发送变量之外,没有明显和简单的方法来共享变量。
希望这可以帮助其他可能提出这个问题的人。
【讨论】:
以上是关于Wordpress 插件类和 Ajax的主要内容,如果未能解决你的问题,请参考以下文章