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

news2024/11/25 14:27:01

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 站点的功能和用户体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1805963.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

里卡提方程(Riccati Equation)例子

里卡提方程(Riccati Equation) 里卡提方程(Riccati Equation)在人形机器人控制中有重要的应用,特别是在最优控制和估计问题中。里卡提方程主要用于求解线性二次型调节器(LQR, Linear Quadratic Regulator)和卡尔曼滤波器(Kalman Filter)。这些方法有助于提高机器人控…

物联网开发tcp协议之——netty拆包问题

1.前言 tcp协议是物联网开发中比较常见的一种通信协议&#xff0c;而netty则是一tcp通信协议中一个比较优秀的框架。tcp协议是一种长连接的协议&#xff0c;是流式传输的&#xff0c;开发过程中最长遇见的问题就是拆包粘包问题。我目前对接过的物联网系列有智能家居设备&#…

8.2 Go 导入与导出

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

【清华大学】《自然语言处理》(刘知远)课程笔记 ——NLP Basics

自然语言处理基础&#xff08;Natural Language Processing Basics, NLP Basics&#xff09; 自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言…

雷电模拟器中控实现,直通源码

目录 前言 开发 需求 初始环境 UI搭建 功能实现 前言 本篇为易语言雷电模拟器中控项目实现操作&#xff0c;一般用于&#xff1a;脚本开发多线程模拟操作等起始模板框架&#xff0c;使用易语言原因为其前后端一体化&#xff0c;对于脚本开发而言更为方便。 开发 需求 以…

Python爬虫入门与登录验证自动化思路

1、pytyon爬虫 1.1、爬虫简介 Python爬虫是使用Python编写的程序&#xff0c;可以自动访问网页并提取其中的信息。爬虫可以模拟浏览器的行为&#xff0c;自动点击链接、填写表单、进行登录等操作&#xff0c;从而获取网页中的数据。 使用Python编写爬虫的好处是&#xff0c;…

[数据集][目标检测]足球场足球运动员身份识别足球裁判员数据集VOC+YOLO格式312张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;312 标注数量(xml文件个数)&#xff1a;312 标注数量(txt文件个数)&#xff1a;312 标注类别…

LeetCode | 1624.两个相同字符之间的最长子字符串

这道题拿到手想法就是去双重遍历暴力解&#xff0c;对于每个字符&#xff0c;从后往前遍历字符串&#xff0c;找到从后往前一直到本次遍历的这个字符串这段子串中和这个字符串相同的字符位置&#xff0c;然后得到子字符串的长度&#xff0c;和ans存储的值做一个比较&#xff0c…

umap降维,c++用法纪实

全是血泪&#xff0c;可惜对于大量数据&#xff0c;速度还是太慢。 一、代码 // ConsoleApplication2.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //#include <iostream>#include "knncolle/knncolle.hpp" #include "Umap.…

MSPM0l1306——配置滴答定时器

我们配置好了滴答定时器之后&#xff0c;还要手动编写滴答定时器的中断服务函数&#xff0c;因为我们开启的滴答定时器的中断&#xff0c;当滴答定时器的计数值从我们设置的值减到0时&#xff0c;就会触发一次中断&#xff0c;触发中断就会执行中断服务函数。各个中断的中断服务…

Bio-Info每日一题:Rosalind-05-Computing GC Content

&#x1f389; 进入生物信息学的世界&#xff0c;与Rosalind一起探索吧&#xff01;&#x1f9ec; Rosalind是一个在线平台&#xff0c;专为学习和实践生物信息学而设计。该平台提供了一系列循序渐进的编程挑战&#xff0c;帮助用户从基础到高级掌握生物信息学知识。无论你是初…

python开发扑克牌游戏

用一个列表保存54张扑克牌&#xff0c;先洗牌,再按斗地主的发牌方式把牌发给三个玩家&#xff0c;多的3张牌给第一个玩家(地主)最后把每个玩家手上的牌显示出来。 import random# 定义卡牌列表 cards [] # 定义花色列表 suites [黑桃, 红心, 草花, 方块] # 定义点数列表 fac…

牛客热题:最长公共子序列Ⅱ

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;力扣刷题日记 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 文章目录 牛客热题&#xff1a;最长公共子序列Ⅱ题目链接方法一…

QT串口调试助手V2.0(源码全开源)--上位机+多通道波形显示+数据保存(优化波形显示控件)

首先关于Qt的安装和基本配置这里就不做重复说明了&#xff0c;注&#xff1a;本文在Qt5.14基础上完成 完整的项目开源仓库链接在文章末尾 图形控件——qcustomplot QCustomPlot是一个基于Qt框架的开源绘图库&#xff0c;用于创建高质量的二维图表和数据可视化。 QCustomPlot…

IO-源码阅读 glibc 2.35

文章目录 参考缓存机制IO_FILE_PLUSfopenfopen_internal_IO_no_init_IO_old_init _IO_new_file_init_internal_IO_link_in _IO_new_file_fopen_IO_file_open fread_IO_fread_IO_sgetn_IO_doallocbuf_IO_file_doallocate_IO_file_stat_IO_setb __underflow_IO_new_file_underflo…

windows软件手动设置开机自启

博主需求 由于很多线上课程使用outlook进行教学&#xff0c;课程链接都关联到outlook日历中了&#xff0c;只要保持outlook是打开的状态就能收到上课提醒&#xff0c;非常方便。 但是有时候会忘记打开outlook查看&#xff0c;我偶尔会错过一些提醒QAQ。 所以如何让outlook常…

Qwen2大模型微调入门实战(完整代码)

Qwen2是通义千问团队的开源大语言模型&#xff0c;由阿里云通义实验室研发。以Qwen2作为基座大模型&#xff0c;通过指令微调的方式实现高准确率的文本分类&#xff0c;是学习大语言模型微调的入门任务。 指令微调是一种通过在由&#xff08;指令&#xff0c;输出&#xff09;对…

解读下/etc/network/interfaces配置文件

/etc/network/interfaces 是一个常见的网络配置文件&#xff0c;通常在 Debian 及其衍生版本的 Linux 发行版中使用。该文件用于配置网络接口和网络连接参数&#xff0c;允许用户手动设置网络连接的属性&#xff0c;包括 IP 地址、子网掩码、网关、DNS 服务器等。 以下是一个可…

LeetCode热题100—链表(二)

19.删除链表的倒数第N个节点 题目 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;head [1], n 1 …

人工智能程序员应该有什么职业素养?

人工智能程序员应该有什么职业素养&#xff1f; 面向企业需求去学习AI必备技能实战能力实战能力提升策略 面向企业需求去学习 如果想要应聘AI相关的岗位&#xff0c;就需要知道HR和管理层在招聘时需要考察些什么&#xff0c;面向招聘的需求去学习就能具备AI程序员该有的职业素…