Code前端首页关于Code前端联系我们

WordPress 短代码 / 什么是简码?重点是什么?

terry 2年前 (2023-09-24) 阅读数 68 #后端开发

WordPress 简码是指[] 中的简码或简码。 WordPress识别这些代码并根据它们定义的回调函数输出相应的内容。

短代码 API 此功能是 WordPress 从 2.5 版本开始引入的。您可以使用它为文章内容添加各种功能,并且界面非常易于使用并且功能非常强大。

简码类型

简码API支持几乎所有可能的组合:自闭标签、开放标签、带参数的标签等。

[mycode]
[mycode foo="bar" id="123" color="red" something="data"]
[mycode]一些内容[/mycode]
[mycode]<p><a href="http://example.com/">HTML 内容</a<>/p>[/mycode]
[mycode]内容 [another-shotcode] 更多内容[/mycode]
[mycode foo="bar" id="123"]一些内容[/mycode]

使用简码时
[mycode]
[mycode foo="bar" id="123" color="red" something="data"]
[mycode]一些内容[/mycode]
[mycode]<p><a href="http://example.com/">HTML 内容</a<>/p>[/mycode]
[mycode]内容 [another-shotcode] 更多内容[/mycode]
[mycode foo="bar" id="123"]一些内容[/mycode]

在后台写文章时,如果这是如果是古腾堡编辑器,可以直接选择小工具类别比较下的简码区块:WordPress Shortcode / 简码是什么?有什么用?

然后在简码区块中,输入特定的简码:WordPress Shortcode / 简码是什么?有什么用?如果不是古腾堡编辑器,则直接输入简码 。

如何运行简码

简码是如何解析成所需内容的?这是因为每个Shortcode都定义了对应的回调函数进行处理。这个回调函数一般有两个参数:属性($attr)和内容($content):

function my_shortcode_func($attr, $content){
    // $attr $key=>$value 的数组
    // $content 是 shortcode 中包含的字符串内容
    // 对 $attr 和 $content 进行处理
    // 返回预期的值
}

然后管理定义的Shortcode及其处理函数,使得[mycode attr= "value"]content[/mycode] 可以按预期执行。

add_shortcode('mycode', 'my_shortcode_func');

查看所有短代码

哪些短代码是WordPress系统定义的,我们可以使用WPJAM Basic插件的“Common Kong”扩展来查看它们。激活扩展后,进入“WPJAM”菜单的“普通简码”子菜单。显示:WordPress Shortcode / 简码是什么?有什么用?

除了WordPress本身定义的Shotcode之外,《共孔》还定义了一些常用的Shortcode。上图中的函数是WPJAM_Shortocode回调方法是“简码常用的扩展定义”。DShortcode 相关函数

WordPress 定义了以下与 ShortCode 相关的函数:

  • Add_shortcode('MyCode', 'FunctionName'); mycode '); // 删除已定义的简码
  • remove_all_shortcodes(); // 删除所有简码
  • $return = do_shortcode($content); // 解析简码in $content and return
  • $return = strip_shortcodes($content); // 删除 $content 中的 Shortcode 标签并返回

一个简单的 Shortcode 示例

获取 简码的电子邮件以 WPJAM Basic 插件的扩展为例。它对输入到 HTML 实体中的电子邮件地址进行转义,以防止电子邮件地址被机器识别然后进行爬网。

[电子邮件] 此简码,其内容 ($content) 是电子邮件地址,还定义了属性 $link。当值为 1 时,电子邮件显示为可单击。详细代码如下。我这里在回调函数中使用了闭包:

add_shortcode('email', function($atts, $content='') {
	extract( shortcode_atts( array(
		'link' => '0'
	), $atts ) );

	if($link){
		return '<a href="mailto:'.antispambot($content,1).'" title="mail to '.antispambot($content,0).'">'.antispambot($content,0).'</a>';
	}else{
		return antispambot( $content,0);
	}
});

Shortcode 高级使用技巧:

仅当 Shortcode 存在时才加载相关脚本文件,我们可以使用 has_shortcode() 函数来检测是否存在。加载中:

add_action('wp_enqueue_scripts', function(){
	global $post;

	if(is_singular() && has_shortcode($post->post_content, 'your-shortcode')){
		wp_enqueue_script('whatever'); //检测到有用到简码后之后才加载脚本
	}
});

如果我们想让主页和其他列表页面尽可能简单,您愿意简码删除:

add_filter('the_content', function($content) {
	if(!is_singular()){
		return strip_shortcodes($content);
	}
	return $content;
});

其他地方使用的简码吗?比如在Sidebar Widgets中:

add_filter('widget_text', 'do_shortcode');

在主题中,直接调用do_shortcode方法:

echo do_shortcode("[my_shortcode]");

我们想要直接在内容中运行shortcode,而不执行它,即如何转义 在短代码之外添加额外的层 []:

[[email]xxx@wpjam.com[/email]]

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门