wordpress主题

wordpress短代码 shortcode介绍

日期:2014-10-22 阅读:4819

dmandwp系统 - wordpress系统和DM系统区块建站>>


进入网易云课堂播放
    |    更多视频教程>

wordpress shortcode短代码是什么?

简单说 WordPress Shortcode 指的是一些使用[]包含的短代码,WordPress会识别这些短代码并根据短代码的定义输出为特定的内容。

定义Shortcode 

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

-------------

具体看: http://codex.wordpress.org/Function_Reference/add_shortcode

Simplest example of a shortcode tag using the API: 
[footag foo="bar"]

function footag_func( $atts ) {
     return "foo = {$atts['foo']}"; //$atts是一个数组,{}是一种输出格式。
}
add_shortcode('footag', 'footag_func');

==================================================================
输出shortcode
shortcode在编辑器里,一般格式是:[footag foo="bar"]>

[mycode foo="bar" id="123" color="red" something="data"]
[mycode]Some Content[/mycode]
[mycode]<p><a href="http://example.com/">HTML Content</a<>/p>[/mycode]
[mycode]Content [another-shotcode] more content[/mycode]
[mycode foo="bar" id="123"]Some Content[/mycode]


那么在其他地方呢?比如在php模板文件里,或者在widget里等, 

// Use shortcodes in text widgets.
add_filter( 'widget_text', 'do_shortcode' );  //在主题的function.php或其他文件里加上这个。

另外:

add_filter('the_content', 'do_shortcode', 11); // AFTER wpautop()  --- 这个在  wp-includes/shortcodes.php 的最后。

the_content 是什么? 就是在模板文件里输出的内容<?php the_content(); ?>

-----

// Use shortcodes in form like Landing Page Template.
echo do_shortcode( '[contact-form-7 id="91" title="quote"]' );


具体看: http://codex.wordpress.org/Function_Reference/do_shortcode
 
=================================================================
解决 Shortcode 中自动添加的 br 或者 p 标签 (这个在wordpress4.0版里,这个问题好像不存在了)

我们在使用 WordPress Shortcode API 开发插件的时候,有个比较麻烦的问题,就是 WordPress 会自动在 shortcode 内添加 br 或者 p 标签,这样可能会打乱你的原先预想的 HTML 结构和布局。

造成这个问题的原因是 WordPress 默认的日志内容处理流程中,wpautop(将回车转换成 p 或者 br 标签的函数)是在 Shortcode 前面运行的。所以我们的解决方案也是非常简单,改变它们执行的顺序,在当前主题的 functions.php 文件中添加:
remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 12);     //--- 这行代码原来是在 wp-includes/default-filters.php

注意:看前面add_filter('the_content', 'do_shortcode', 11); //12排在11后面。
---------------

<<点击返回