【问题标题】:Call a file in a plugin using AJAX in wordpress在 wordpress 中使用 AJAX 调用插件中的文件
【发布时间】:2013-01-18 09:17:05
【问题描述】:

我正在使用 wordpress 3.5 并使用插件来处理时事通讯。我放置了由一个用于电子邮件的文本框和一个用于订阅的按钮组成的时事通讯小部件。单击该按钮时,它将被定向到一个名为 subscribe.php 的文件。它在 [wordpress_plugin_directory]/subscribe.php 中。

我想为此订阅使用 AJAX。单击该按钮时,它将简单地调用 [wordpress_plugin_directory]/subscribe.php 并让该文件完成工作。我已经阅读了很多关于如何在 Wordpress 上使用 AJAX 的文章,但似乎我无法掌握它。

如何使用 AJAX 调用该文件?

【问题讨论】:

    标签: ajax wordpress plugins subscribe


    【解决方案1】:

    这很难回答,因为您没有展示您尝试过的内容。

    按照codex 中的示例,它可以工作。进一步阅读的文章(尤其是关于安全的)也值得阅读和实施。

    AJAX 将调用一个函数,而不是打开文件(尽管您可以使用 includerequire 在函数中打开文件 - 但这可能不是必需的,为什么不直接使用函数返回什么你需要吗?我不知道 subscribe.php 中有什么,所以这可能合适,也可能不合适。

    如果您仍然无法使其正常工作,请说明您尝试过的方法以及失败的地方,以便提供更详细的答案。

    【讨论】:

      【解决方案2】:

      你有这样的表格

      <form id="newletterBoxForm" method="POST" action="[wordpress_plugin_directory]/subscribe.php">
          <input type="text" ... />
          <input type="text" ... />
          <input type="submit" ... />
      </form>
      

      使用 jQuery,您将在事件开始之前获得该事件并取消该操作,如下所示:

      $(document).ready(function() {
          $("#newletterBoxForm").on("submit", function() {
              $.ajax({
              type: "POST",
              url: "[wordpress_plugin_directory]/subscribe.php.",
              // get the data of your form
              data: $(this).serialize(),
              success: function (data) {
                  // if it is ok, do some actions
                  alert("ok DONE!")
              },
              error : function(s , i , error){
                  console.log(error);
              }
          });
          // cancel normal behaviour which will refresh your page
          return false;
      });
      

      【讨论】:

      • 这会起作用,但它不是“WordPress 方式”。直接发布到 subscribe.php 会删除 WordPress 的可用性,因此请特别注意您的脚本以防止潜在的 XSS(和其他)漏洞。
      • 我认为这是完全有效的,因为表单已经发布到这个 url 而不是其他的……没有“额外的照顾”。
      • 正如我所说,它会起作用,所以它在这个意义上是有效的——但这不是最好的方法。仅仅因为 OP 已经发布到一个独立的文件并不能使它正确。回发到同一页面并使用带有简单随机数和验证功能的 WordPress 路由要好得多。
      • 对不起,我以为表单的url是这个,某些插件可能会发生这种情况。我现在明白了。显然,他必须遵循当前形式的行动。
      猜你喜欢
      • 2013-07-25
      • 2013-03-18
      • 2019-07-24
      • 2014-11-09
      • 2011-12-04
      • 1970-01-01
      • 2014-11-12
      • 1970-01-01
      • 2017-04-28
      相关资源
      最近更新 更多