如何制作WordPress短代码
大家好,这是我的第一次在CSDN发布博客,我是个新手,今天我写的是如何制作wordpress短代码,第一次献丑,请多多指教。
A. 短代码和普通 HTML的编写形式不是很相同,采用的是方括号的形式编写的,短代码中还可以包含很多的属性。比如[baidumap height=800 width=800],baiduma短代码有两个属性height和width。
一般短代码两步即可。
第一步:在主题的function.php,创建函数,有无参数都可以。
第二部:函数和钩子(HOOK)绑定起来。
function 函数名($atts,$content=null)
{
extract(shortcode_atts(array(
"参数一名称" => '0',
"参数二名称" => '1'(可选)),
$atts));
return 返回值;
}
add_shortcode(短代码名,函数名);
函数名中第一个参数是用来设置短代码的参数的,第二个参数是用来截取短代码之间的内容的,比如说,[baidumap]aabbccdd[/baidumap],那么aabbccdd就是变量content的内容。
注意:我们需要使用两个函数,第一个是Wordpress内置的shortcode_atts()函数,它把用户的短代码属性与本地属性结合在一起,并填充到所需要的位置。第二个是PHP的extract()函数,extract()函数它提取短代码的各个属性。extract()函数表示从数组中把变量导入到当前的符号表中,对于数组中的每个元素,键名用于变量名,键值用于变量值。
B. 下面看这个例子:
1 2 3 4 5 | function Test($atts,$content=null) { return "aa".$content."bb"; } add_shortcode(Test2,Test); |
这个函数返回的是”aa”$content”bb”,$content变量就是短代码之间的内容。
C. 下面看这个例子,
<span style="font-size:18px;">/* 增加短代码,显示最新的posts也就是文章,可以在引用短代码[recent-posts]的时候加上参数$atts和$content,比如[recent-posts posts = "5"]这个是标题
[/recent-posts],这样的话会显示最新的5个文章的,如果不引用$content参数的话,就直接[recent-posts posts = "5"]后面不需要加其他的,如果都不加参数的话就引用函数默认的,默认是$atts=1 */
/*第一步是先创建回调函数,我们通过查询数据库,获取最新的文章,并返回一个带有链接的字符串。值得注意的是,回调函数并不打印任何内容,而是返回一个字符串。注意不能用已经注册过的名字*/
function recent_posts_function ( $atts ) {
extract( shortcode_atts ( array (
'posts' => 1,
),$atts ) );
$return_string = '<ul>';
query_posts ( array ( 'orderby' => 'date' , 'order' => 'DESC' , 'showposts' => $posts ) ) ;
//开始循环,query_posts是自定义循环函数。可以加参数的。固定循环不用加query_posts,也不可以加参数。
if ( have_posts ( ) ) :
while ( have_posts ( ) ) : the_post ( ) ;
$return_string .= '<li><a href="' . get_permalink ( ) . '">' . get_the_title ( ) . '</a></li>' ;
endwhile ;
endif ;
$return_string .= '</ul>';
wp_reset_query ( ) ;
//结束循环
return $return_string ;
}
/*第二步是注册短代码,确保短代码的名字是唯一的,以避免重复*/
function register_shortcodes ( ) {
add_shortcode ( 'recent-posts' , 'recent_posts_function' ) ;
}
/*第三步是增加钩子*/
add_action ( 'init' , 'register_shortcodes' ) ;
/*默认侧边栏,评论,摘要等地方都是不显示短代码的,所以我们要让这些地方也支持短代码。*/
add_filter ( 'widget_text' , 'do_shortcode' ) ; //侧边栏启用短代码
add_filter ( 'comment_text' , 'do_shortcode' ) ; //评论启用短代码
add_filter ( 'the_excerpt' , 'do_shortcode' ) ; //摘要启用短代码</span>
注意:add_action()和add_filter()函数都是钩子(HOOK),钩子指定了你的函数在什么时候执行,add_action("钩子","需要调用的函数");第一个参数钩子可以从http://codex.wordpress.org/Plugin_API/Action_Reference查到add_action
钩子。同样的,filter也是一样,可以从http://codex.wordpress.org/Plugin_API/Filter_Reference查到。
作者:paul
文章出处:http://blog.csdn.net/jiandanokok/article/details/42488491本文版权归作者和CSDN共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
分类: wordpress
标签: wordpress,HOOK,短代码