【问题标题】:How To Tell When A JSON Request Is Received In Wordpress?如何判断 Wordpress 何时收到 JSON 请求?
【发布时间】:2014-10-10 17:25:39
【问题描述】:

我正在为 wordpress 使用JSON API plugin,以允许我在我正在构建的 phonegap 应用程序中处理网站内容。

但是,由于网站上某些内容的复杂性(由输出图表、滑块等的简码引起),这些内容不适合在移动应用中显示。我需要从 JSON 输出中删除短代码。

我发现我可以连接到 wordpress 中的 the_content 过滤器并使用 remove_shortcode 取出必要的简码。但问题是我只能在通过浏览器访问 json url 时这样做。

例如,我可以使用http://example.com?json=1 来返回最近的帖子。如果我在我的 url 栏中输入这个,我可以解析 url,确定 json=1 在那里并去除短代码。

但是,当我从我的移动应用程序执行 ajax (JSONP) 请求时,它似乎无法检查 json 参数的 url,因此我的短代码没有被剥离。我什至不能传递任何标头,因为我相信由于JSONP 请求的性质,它们不会成功。

有没有人知道如何确定何时收到来自我的移动应用程序的 JSON 请求,以便我可以删除短代码?

类似

if(is_json()){
//remove shortcodes
}

在提出之前,我已经在Wordpress Stackexchange 上问过这个问题,但无济于事

更新: 这是我用于来自移动应用的 ajax 请求的代码

  $.ajax({
                    url: "http://www.example.com/?json=1",
                    dataType: "jsonp",
                    async: true,
                    success: function(result) {
                        app.populate(result)
                    },
                    error: function(request, error) {
                        alert('Network error has occurred please try again!');
                    }
                });

【问题讨论】:

    标签: json wordpress json-api


    【解决方案1】:

    您不能在您的插件向客户端提供内容的任何时候使用 remove_shortcode 函数吗?

    您能否也给我们您的插件的名称/网址? 也许一点代码也不会受到伤害。您介意使用您的 phonegap 应用程序的 API 请求代码 sn-p 吗?

    谢谢。

    【讨论】:

    • 但是如何判断json api插件何时被使用呢?我已经用 ajax 请求代码更新了我的帖子。我已经链接了帖子第一行中使用的插件wordpress.org/plugins/json-api
    • 在插件的 core.php 文件中,有一些方法取决于您要检索的内容类型。例如,getPost() 函数返回给定帖子 ID 的 JSON 对象。只需用您的 remove_shortcode() 函数覆盖 return 语句。您必须对通过 API 使用的每个函数执行相同的操作(您应该在 return 语句之前执行以下操作:$response["content"] = remove_shortcode($reponse["content"]);)。
    • 好吧,你说的让我想多了。我已经尝试在插件中四处寻找内容被拉入的位置,但我没有找到它。 core.php 中的 getPost() 虽然位置不正确,但将我带到 post.php 文件。在那里我找到了内容被拉入的位置,以及应用的过滤器。我只是能够在那里添加我的remove_shortcode() 并删除了短代码!非常感谢
    【解决方案2】:

    在其中一位 cmets 的提示下,我在 JSON-API 插件文件中找到了我需要的内容。

    如果您查看json-api/models/post.php,则会有一个函数set_content_value() 显示插件在哪里提取内容。在这里你可以根据需要修改它,在我的例子中,我用它来删除某些短代码与 Wordpress remove_shortcode() 函数

    【讨论】:

      猜你喜欢
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      • 2020-01-05
      • 1970-01-01
      • 2014-12-24
      • 2010-10-15
      • 2021-05-07
      • 2013-01-15
      相关资源
      最近更新 更多