使用 AJAX 调用 WordPress 简码

2024-01-03

我想使用切换按钮运行短代码。如果开关为“ON”,我会调用一个短代码,如果它为“OFF”,我会调用另一个。

作为测试,我尝试通过 AJAX 单击单个链接来调用短代码,它给出了以下内容:

文件“page-recherche.php”:

<a href="" id="clicklien">CLICK HERE</a>


<script>
$("#clicklien").click(function(e){
      e.preventDefault();
    $.ajax({
    url: 'http://www.capitainebar.com/wp-content/themes/Capitaine-Bar/shortcode-recherche.php',
    success: function (data) {
        // this is executed when ajax call finished well
        console.log('content of the executed page: ' + data);
        $('body').append(data);

    },
    error: function (xhr, status, error) {
        // executed if something went wrong during call
        if (xhr.status > 0) alert('got error: ' + status); // status 0 - when load is interrupted
    }
});

});
</script

名为“shortcode-recherche.php”的文件:

<?php echo do_shortcode( '[search-form id="1" showall="1"]' ); ?>

结果是致命错误。就好像代码在“shortcode-recherche.php”而不是“page-recherche.php”中运行。

请注意,如果我直接将短代码写入页面而不使用 AJAX 调用,则短代码可以正常工作。

你可以看到结果在这里 http://www.capitainebar/recherche


当你直接调用PHP文件时,WordPress不参与其中。这意味着函数类似于do_shortcode()甚至不存在。

相反,您需要请求 WordPress 捕获的文件(即使通常是 404)。然后,让您的插件识别该 URL。您可以使用查询变量(简单)或重写规则(困难,更漂亮)来完成此操作。例如:

查询变量:example.org/?custom_shortcode=gallery

重写规则:example.org/custom_shortcode/gallery/


无论您选择哪个选项,您的插件都需要知道您何时访问此 URL 并拦截它。完成后,您需要退出脚本以防止 WordPress 尝试显示 404 页面。

这是一个示例,您可以将其简单地放入您的functions.php 文件中。

function shortcode_test() {
  if ( !empty($_REQUEST['shortcode']) ) {
    // Try and sanitize your shortcode to prevent possible exploits. Users typically can't call shortcodes directly.
    $shortcode_name = esc_attr($_REQUEST['shortcode']);

    // Wrap the shortcode in tags. You might also want to add arguments here.
    $full_shortcode = sprintf('[%s]', $shortcode_name);

    // Perform the shortcode
    echo do_shortcode( $full_shortcode );

    // Stop the script before WordPress tries to display a template file.
    exit;
  }
}
add_action('init', 'shortcode_test');

您可以通过访问您的网站来测试这一点,并在 URL 末尾添加以下内容:

?shortcode=gallery

这应该显示扩展为 HTML 的图库短代码。一旦它起作用,只需将其与您现有的 AJAX 功能绑定即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 AJAX 调用 WordPress 简码 的相关文章

随机推荐

  • 在C中将进程置于后台

    我目前正在潜心创建一个后台工作C with 我需要实现一个非阻塞waitpid为了使其发挥作用 我知道 另外 我已经发现了这种情况 如果 在命令行末尾输入 我只是不确定如何准确地发送进程 最后将其作为后台作业 并在另一个提示提示下一个命令时
  • 想要通过 terraform 将多个 Google Cloud IAM 角色分配给服务帐户

    我想通过 terraform 将多个 IAM 角色分配给单个服务帐户 我准备了一个 TF 文件来执行此操作 但它有错误 对于单个角色 可以成功分配 但对于多个 IAM 角色 则会出现错误 data google iam policy aut
  • 使用 Microsoft Graph API C# 将聊天消息发送到 Microsoft Teams 频道

    我的目标很简单 我想使用图形 API 将自动聊天消息发送到 MS Teams 频道 这似乎是图形 API 的测试版功能 仅在 Microsoft Graph Beta 中可用 我已阅读文档并一直尝试遵循此示例 https learn mic
  • Git/gitolite:设置 gitolite 后移动存储库

    我正处于让 Git 和 Gitolite 工作的最后阶段 这是目前的情况 Gitolite 管理下的存储库没有工作副本 因此 您要做的就是创建另一个包含工作副本的存储库 提交数据并将它们推送到 gitolite 管理的存储库 最简单的方法是
  • 当我使用自定义入口点时,为什么 webpack 无法找到 React?

    我在 Webpack 中设置了一个自定义入口点 但在我的 React 代码行中收到错误 import React from react Webpack 能够构建它 但它不会拦截该路径 因为 Chrome 给了我这个控制台错误 未捕获的类型错
  • 服务人员强制更新新资产

    我一直在阅读html5rocks Service Worker 简介 http www html5rocks com en tutorials service worker introduction 文章并创建了一个基本的服务工作线程来缓存
  • 为什么 Firefox 中的背景过滤器不起作用?

    我使用背景过滤器 模糊 30px 但 Firefox 不支持此属性 moz 背景过滤器 模糊 60px 也不起作用 默认不支持https caniuse com css backdrop filter https caniuse com c
  • 如何在 vstest 控制台上获取自定义输出?

    我在 Visual Studio 2012 中编写了一些数据驱动的测试 当我通过在 Visual Studio 2012 命令提示符中运行以下命令从控制台运行测试时vstest console exe myTestSuite dll 我收到
  • 什么是 Querydsl 'Q'

    我看到了 Querydsl 的示例 但我不明白其中的 QEmployee 是什么 QEmployee employee QEmployee employee QEmployee e new QEmployee e query from em
  • 如何在 Intellij 中启用 CSS 编辑

    我刚刚切换到 IntelliJ IDEA 因为我认为它非常适合开发 JavaFX 应用程序 我一定做错了什么 因为当我编辑 CSS 文件时 没有代码完成 当我尝试创建新的 CSS 文件时 没有 CSS 文件选项 我正在使用 IntelliJ
  • 如何在 Rails 中将文本转换为 unicode?

    在我的数据库中 我有以下条目 id name info 1 John Smith 正如您所知 信息栏显示错误 但它实际上是韩语 在 Chrome 中 当我将浏览器编码从 UTF 8 切换为韩语 我认为是 euc kr 时 我实际上设法这样查
  • 如何安装jar库?

    我已经下载了 ANTLR Java 运行时库 这是一个 jar 文件 它包含 org antlr runtime 我应该把它放在哪里以便 Java 编译器可以找到它 我需要提取它吗 如果相关的话 我正在使用 NetBeans 目前 假设您可
  • msbuild xmlupdate 删除 web.config 中的节点

    如何使用 MSBuild 社区任务删除 web config 中的节点 我可以使用 XmlUpdate 任务更新节点 但无法删除节点 有任何想法吗 XmlUpdate 任务可以做到这一点 我正在使用 2010 年 11 月 30 日的夜间版
  • 将纬度和经度转换为 3D 空间中的点

    我需要将纬度和经度值转换为 3 维空间中的点 我已经尝试了大约 2 个小时 但没有得到正确的结果 The 等长方形坐标来自openflights org http openflights org data html 我尝试了几种组合cos
  • JIRA api 的 .NET 包装器?

    我正在开发 JIRA 实现 需要使用 API 有谁知道 JIRA SOAP API 的现有 NET 包装器吗 在 Visual Studio NET 项目中 右键单击项目引用并选择 添加服务引用 输入 JIRA 的 WSDL 描述符的 UR
  • 如何捕获datePicker关闭事件

    我正在使用日期选择器 它工作正常 我的网页很少需要使用开始日期和结束日期进行一些计算 我希望能够在日期选择器关闭时进行计算 我在用 有人有什么建议吗 您正在寻找onClose method 参考API文档here http api jque
  • 公共 IP 地址是否可以用作 Google OAuth 重定向 URI?

    我正在尝试设置一个需要用户的 Google Latitude 信息的网络服务 因此我使用 Google OAuth 来获取用户授权内容 但是 当尝试在 Google API 控制台中为 Web 应用程序客户端 ID 设置重定向 URI 时
  • 在 int main() 中使用类函数

    我在从主程序调用函数时遇到问题 这些功能必须在我的班级中 如何从 int main 访问它们 include
  • 使用 Delphi 7 进行开发时,准备好使用 Delphi 2009 及更高版本了吗?

    我正在 Delphi 7 中开发一个 Word 插件 但很快我会将其升级到 Delphi 2010 如您所知 因为 2009 版本 Delphi 引入了新的字符串类型Unicode字符串等于关键字string 另一方面 根据这个线程 htt
  • 使用 AJAX 调用 WordPress 简码

    我想使用切换按钮运行短代码 如果开关为 ON 我会调用一个短代码 如果它为 OFF 我会调用另一个 作为测试 我尝试通过 AJAX 单击单个链接来调用短代码 它给出了以下内容 文件 page recherche php a href CLI