web

add_shortcode实现文字提示框美化

有时候,我们希望我们的网站更加美观,文章中的文字布局更加优美。

而wordpress默认的文本编辑器,支持标签功能,我们可以通过css来实现各种各样漂亮的页面效果。

首先让大家看下效果:


世界之大,再远也只是天涯。

举例,我们在写新文章时有可视化文本两种选择,切换到文本模式下,编写如下代码:

<p style="color: blue;">欢迎来到夏之冰雪的世界</p>

那么查看文章时就会发现,网站文字自动变成了蓝色的字体:

欢迎来到夏之冰雪的世界

但是这种方法有一个缺点就是,每次都要自己手动输入代码,来实现具体的展示效果。若我们想实现一个很漂亮的样式效果,可能需要一段复杂的css来实现,这样就显得比较麻烦。更一般的,在写新文章时,我们可能经常会用到这个样式效果,麻烦可想而知。

由于wordpress本身的强大和灵活,我们有一种很简单的解决方案,即add_shortcode方法。

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

shortcode 支持封闭标签和自闭(自动封闭)标签,并且支持在标签内使用参数,至于 shortcode 具体是何种形式,这就决定于开发者怎样编写这个 shortcode 了。

一般常用的方式如下:

[myshortcode title="example"]Some Content[/myshortcode]

title为标签内部传递的参数,Some Content则为标签包含的文本内容。

具体实现如下:

function myshortcode_function($atts, $content = null)
{
    //使用 extract 函数解析标签内的参数
    //下面直接调用$加上参数名输出参数值
    extract(shortcode_atts(array("title"=>'my title'), $atts));
    // 返回内容
    return '
<div class="myshortcode">
    <h3>'
. $title .'</h3>
    '
. $content .'
</div>
'
;
}
//注册该shortcode,以后使用[test]标签调用该shortcode即可
add_shortcode("test", "myshortcode_function");

将上面的代码添加到functions.php中,一个简单地shortcode就完成了。以后我们写文章的时候,可以直接调用即可:

[test title="RanShy"]欢迎来到夏之冰雪的博客[/test]

接下来,我们开始实现精美的文本提示框,一共需要四步。
1. 添加css样式如下,保存到当前模板目录的style.css文件下:

#sc_notice {
    color: #7da33c;
    background: #ecf2d6 url('images/sc_notice.png') -1px -1px no-repeat;
    border: 1px solid #aac66d;
    overflow: hidden;
    margin: 10px 0;
    padding: 15px 15px 15px 35px;
}

2. 在wp-includes/shortcodes.php中生成相应的方法:

//add text padding by shy
function toz($atts, $content=null){
    return '<div id="sc_notice">'.$content.'</div>';
}
add_shortcode('v_notice','toz');

function toa($atts, $content=null){
    return '<div id="sc_error">'.$content.'</div>';
}
add_shortcode('v_error','toa');

function toc($atts, $content=null){
    return '<div id="sc_warn">'.$content.'</div>';
}
add_shortcode('v_warn','toc');

function tob($atts, $content=null){
    return '<div id="sc_tips">'.$content.'</div>';
}
add_shortcode('v_tips','tob');

3. 在wp-includes/functions.php中引用方法:
我们需要在functions文件起始位置加入:

<?php
/**
 * Main WordPress API
 *
 * @package WordPress
 */


require( ABSPATH . WPINC . '/option.php' );

4. 将图片资源上传资源到相应的目录下即可

在编写文章的时候,按照这样的格式写:
[notice]你想要展示的文字[/notice]


至此,一个自定义的文字提示框实现了。

1 Comment

  1. haoxinqing

    赞!

Leave a Reply

黑ICP备15001596号