如何向快捷码添加属性

时间:2016-07-13 作者:Darren Bachan

阅读法典,我有:

function btn_shortcode( $atts, $content = null ) {
    $a = shortcode_atts( array(
        \'class\' => \'button\',
    ), $atts );

    return \'<a class="\' . esc_attr($a[\'class\']) . \'">\' . $content . \'</a>\';
}
add_shortcode( \'button\', \'btn_shortcode\' );
在我写的WYSIWIG中[button class="btn btn-lg btn-default"]Learn More[/button] 它可以按我的要求输出,但我想写我的短代码来实现这一点:

[button href="foo" class="btn btn-lg btn-default"]Learn More[/button]
如何修改函数以允许此操作?

1 个回复
最合适的回答,由SO网友:Sledge Hammer 整理而成

只需向数组中添加另一个元素(然后输出):

function btn_shortcode( $atts, $content = null ) {
    $a = shortcode_atts( array(
        \'class\' => \'button\',
        \'href\'  =>  \'#\'
    ), $atts );

    return \'<a class="\' . esc_attr($a[\'class\']) . \'" href="\' . esc_attr($a[\'href\']) . \'">\' . $content . \'</a>\';
}
add_shortcode( \'button\', \'btn_shortcode\' );

//EDIT:

为了添加用户定义的样式,您只需向数组中添加另一个元素:

function btn_shortcode( $atts, $content = null ) {
    $a = shortcode_atts( array(
        \'class\' => \'button\',
        \'href\'  =>  \'#\',
        \'style\' =>  \'\'
    ), $atts );

    return \'<a class="\' . esc_attr($a[\'class\']) . \'" href="\' . esc_attr($a[\'href\']) . \'" style="\' . esc_attr($a[\'style\']) . \'">\' . $content . \'</a>\';
}
add_shortcode( \'button\', \'btn_shortcode\' );
下面是一个用法示例:

[button href="foo" class="btn btn-lg btn-default" style="font-weight:bold; margin-top:50px; background-color: #999"]Learn More[/button]

//EDIT2:

您可以向快捷码添加不同的样式属性,然后将它们全部输出到HTML标记的样式属性中,但这将限制自定义CSS仅限于这些预定义属性,并且您还必须为每个属性都设置一些预定义值,以防用户将其留空。如果其中一些为空,并且您没有预定义的值,那么您可能会得到如下结果-<a href="#foo" class="button" style="font-weight:; margin-top: 20px; background-color:;"

function btn_shortcode( $atts, $content = null ) {
    $a = shortcode_atts( array(
        \'class\' => \'button\',
        \'href\'  =>  \'#\',
        \'background-color\' =>  \'#999\',
        \'font-weight\' => \'normal\',
        \'margin-top\' => \'10px\'

    ), $atts );

    return \'<a class="\' . esc_attr($a[\'class\']) . \'" href="\' . esc_attr($a[\'href\']) . \'" style="font-weight:\' . esc_attr($a[\'font-weight\']) . \'; background-color\' . esc_attr($a[\'background-color\']). \'; margin-top:\' . esc_attr($a[\'margin-top\']) . \';">\' . $content . \'</a>\';
}
下面是一个用法示例:

[button href="foo" class="btn btn-lg btn-default" font-weight="bold" margin-top="50px" background-color="#999"]Learn More[/button]

相关推荐

Execute shortcodes in PHP

我在帖子编辑器中添加了一个地理位置快捷码,可以根据用户的位置显示不同的信息,将其放在帖子页面的内容中,效果非常好。如何在主题的PHP文件中执行此短代码[地理位置][地理位置]?我正在使用免费修改Wordpress主题,我想添加一个新的<span>[geolocation][/geolocation]Information text content</span> 但在主题的内部。php文件,我如何才能做到这一点?如果我直接加上<span>[geolocation][/ge