禁止解析文章中的短代码

WordPress评论194阅读模式

如果你是一个WordPress主题或插件的开发者, 可能我和一样一直被个问题所困扰,那就是需要将短代码加到文章中,用于说明短代码使用方法,但当前的主题已包括这个短代码函数,添加短代码后,会直接运行解析,例如,这个 WordPress 内置的视频短代码:

[video src="video.mp4" width="640" height="360"]

正常添加会直接解析运行,根本看不到短代码,直接显示的是视频播放器,所以我一般用【】代替[]:

【video src="video.mp4" width="640" height="360"】

用户复制短代码后,还要替换符号,非常不便。

偶然发现,解决这个问题非常简单,只要短代码外面再套个短代码即可,将下在代码添加到functions.php模板中:

// 禁止解析短代码
function shortcode_forbid( $atts, $content = null ) {
	return $content;
}
add_shortcode('forbid', 'shortcode_forbid');

之后用 [forbid][/forbid] 把短代码包裹起来。

[forbid]
[video src="https://example.com/video.mp4" width="640" height="360"]
[/forbid]

这样短代码将不会解析运行,以代码的形式显示。

原理就是,当 WordPress 解析带有[forbid]短代码的内容时,会先解析内部的短代码,然后将结果作为参数传递给shortcode_forbid()函数。因为shortcode_forbid()函数只是简单地返回传入的内容,所以输出的结果不包含被禁用的短代码。

短代码虽然已逐渐被区块所取代,但同样一个功能,短代码可能10行代码搞定,区块则需要几百行,查看源代码大量的样式代码,看着就闹心。

禁止解析文章中的短代码

本站文章大部分始于原创,用于个人学习记录,可能对您有所帮助,仅供参考!

weinxin
我的微信
版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!
 
知更鸟
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

拖动滑块以完成验证