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的主要内容,如果未能解决你的问题,请参考以下文章

css WP:默认WordPress CSS类和ID

班哈维™s Wordpress id类和标记引用

wordpress 父类和子类调用不同模板

WordPress自定义Walker类,从菜单项中删除不必要的类和ID

wordpress插件的常用插件

如何在 WordPress 的“wp_nav_menu”子菜单中的 <a>-tag 中添加类和元素?