当前位置: 首页 > news >正文

【WP|9】深入解析WordPress [add_shortcode]函数

add_shortcode 是 WordPress
中一个非常强大的函数,用于创建自定义的短代码(shortcodes)。短代码是一种简洁的方式,允许用户在内容中插入动态的、可重用的功能。通过
add_shortcode,开发者可以定义自己的短代码,然后用户可以在帖子、页面、小工具或其他内容区域中使用这些短代码来显示特定的内容或功能。

在这里插入图片描述

add_shortcode 的语法

add_shortcode( $tag, $callback );
  • $tag(字符串):这是短代码的名称,用户在内容中使用的标签。
  • $callback(回调函数):这是一个函数,当短代码被使用时将被调用。该函数应该返回短代码的输出内容。

使用示例

以下是一个简单的示例,展示如何创建和使用短代码。

  1. 定义短代码
    在你的主题的 functions.php 文件或插件文件中添加以下代码:

    function my_custom_shortcode($atts, $content = null) {// 提取和处理短代码属性$attributes = shortcode_atts(array('attr1' => 'default_value1','attr2' => 'default_value2',), $atts);// 返回短代码的输出内容return '<div class="custom-shortcode">' . $attributes['attr1'] . ' - ' . $attributes['attr2'] . '</div>';
    }// 注册短代码
    add_shortcode('my_shortcode', 'my_custom_shortcode');
    
  2. 使用短代码
    在帖子或页面中,你可以使用以下语法插入短代码:

    [my_shortcode attr1="value1" attr2="value2"]
    

    这将被解析为:

    <div class="custom-shortcode">value1 - value2</div>
    

更高级的用法

1. 短代码的嵌套

短代码可以包含嵌套内容。下面是一个处理嵌套内容的示例:

function my_nested_shortcode($atts, $content = null) {return '<div class="nested-shortcode">' . do_shortcode($content) . '</div>';
}add_shortcode('nested_shortcode', 'my_nested_shortcode');

在帖子或页面中使用:

[nested_shortcode]这里是嵌套内容,可以包含其他短代码,比如 [my_shortcode attr1="value1"][/nested_shortcode]
2. 复杂的回调函数

回调函数可以非常复杂,包含条件逻辑、数据库查询等。例如:

function my_complex_shortcode($atts) {global $wpdb;$attributes = shortcode_atts(array('category' => 'default',), $atts);$category = $attributes['category'];// 查询数据库$results = $wpdb->get_results($wpdb->prepare("SELECT * FROM wp_posts WHERE post_category = %s",$category));$output = '<ul class="category-posts">';foreach ($results as $post) {$output .= '<li>' . $post->post_title . '</li>';}$output .= '</ul>';return $output;
}add_shortcode('complex_shortcode', 'my_complex_shortcode');

在帖子或页面中使用:

[complex_shortcode category="news"]

总结

add_shortcode 是 WordPress 提供的一个非常有用的工具,允许开发者创建自定义的短代码,提供灵活的内容展示方式。通过合理使用短代码,可以极大地增强 WordPress 站点的功能和用户体验。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 摄影店展示服务预约小程序的作用是什么
  • idm究竟有哪些优势
  • Java File IO
  • 多种策略提升线上 tensorflow 模型推理速度
  • 初识 CAS理论
  • 【JS】理解闭包及其应用
  • 计网总结☞网络层
  • 吊车报警的工作原理和使用场景_鼎跃安全
  • SecureCRT[po破] for Mac SSH终端操作工具[解] 安装教程
  • Docker快速部署springboot项目
  • 冯喜运:6.10周一黄金还会再次拉升吗?日内黄金原油操作策略
  • 简单介绍一下vim
  • Uniapp与第三方应用数据通讯
  • 【数据结构】详解堆排序当中的topk问题(leetcode例题)
  • HTML 中使用 JavaScript 的具体方式
  • 【React系列】如何构建React应用程序
  • Akka系列(七):Actor持久化之Akka persistence
  • docker-consul
  • ES6语法详解(一)
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • markdown编辑器简评
  • MySQL几个简单SQL的优化
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • nginx 负载服务器优化
  • node和express搭建代理服务器(源码)
  • React的组件模式
  • text-decoration与color属性
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 精彩代码 vue.js
  • 排序(1):冒泡排序
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 实战|智能家居行业移动应用性能分析
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 走向全栈之MongoDB的使用
  • Linux权限管理(week1_day5)--技术流ken
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #pragma once与条件编译
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (26)4.7 字符函数和字符串函数
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (C语言)fread与fwrite详解
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (一)Neo4j下载安装以及初次使用
  • (转)大道至简,职场上做人做事做管理
  • *1 计算机基础和操作系统基础及几大协议
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径