FontAwous短码无法正常工作

时间:2015-09-30 作者:Ashiquzzaman Kiron

 function addscFontAwesome($atts) {
    extract(shortcode_atts(array(
    \'type\'  => \'\',
    \'size\' => \'\',
    \'rotate\' => \'\',
    \'flip\' => \'\',
    \'pull\' => \'\',
    \'animated\' => \'\',
    \'class\' => \'\',

    ), $atts));

    $classes  = ($type) ? \'fa-\'.$type. \'\' : \'fa-star\';
    $classes .= ($size) ? \' fa-\'.$size.\'\' : \'\';
    $classes .= ($rotate) ? \' fa-rotate-\'.$rotate.\'\' : \'\';
    $classes .= ($flip) ? \' fa-flip-\'.$flip.\'\' : \'\';
    $classes .= ($pull) ? \' pull-\'.$pull.\'\' : \'\';
    $classes .= ($animated) ? \' fa-spin\' : \'\';
    $classes .= ($class) ? \' \'.$class : \'\';

    $theAwesomeFont = \'<i class="fa \'.esc_html($classes).\'"></i>\';

    return $theAwesomeFont;
}

add_shortcode(\'icon\', \'addscFontAwesome\');
//用法[icon type=“facebook”]

问题是,无论我在图标类型中插入什么,它总是显示星形(这是因为在class属性中有“fa-star”),在删除“fa-star”后,我尝试了十几次修改/替换,以便我插入的图标类型会显示,但不起作用。我想我没有直截了当地看清楚,如果有任何帮助,我将不胜感激。

EDIT 我在本地主机上工作

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

我测试了你的代码,它对我有效。您的服务器是否可能不支持extract 作用现在PHP中不赞成使用extract。这是提取短代码属性的推荐方法:

function addscFontAwesome($atts) {

    $args = shortcode_atts(
        array(
            \'type\'  => \'\',
            \'size\' => \'\',
            \'rotate\' => \'\',
            \'flip\' => \'\',
            \'pull\' => \'\',
            \'animated\' => \'\',
            \'class\' => \'\',
        ),
        $atts,
        \'icon\'
    );

    $classes  = ($args[\'type\']) ? \'fa-\'.$args[\'type\']. \'\' : \'fa-star\';
    $classes .= ($args[\'size\']) ? \' fa-\'.$args[\'size\'].\'\' : \'\';
    $classes .= ($args[\'rotate\']) ? \' fa-rotate-\'.$args[\'rotate\'].\'\' : \'\';
    $classes .= ($args[\'flip\']) ? \' fa-flip-\'.$args[\'flip\'].\'\' : \'\';
    $classes .= ($args[\'pull\']) ? \' pull-\'.$args[\'pull\'].\'\' : \'\';
    $classes .= ($args[\'animated\']) ? \' fa-spin\' : \'\';
    $classes .= ($args[\'class\']) ? \' \'.$args[\'class\'] : \'\';

    $theAwesomeFont = \'<i class="fa \'.esc_attr($classes).\'"></i>\';

    return $theAwesomeFont;
}
add_shortcode(\'icon\', \'addscFontAwesome\');
确保您使用的是最新版本的Font Awesome。下面是我使用的代码:

function nateallen-font-awesome() {
    wp_enqueue_style( \'nateallen-font-awesome\', \'//maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css\', array(), \'4.4.0\' );
}
add_action( \'wp_enqueue_scripts\', \'nateallen-font-awesome\' );

相关推荐

Namespaced shortcode?

我正在改造一个旧的WP站点,该站点有许多自定义的短代码,显然由于代码当前的组织方式,这些短代码在性能方面付出了代价。当然,我可以修复优化不好的代码,使用十几个短代码,并且一天就可以完成,但我想知道如何更好地组织它们。根据WordPress\'documentation, 建议将它们放在插件中并在上初始化init. 我们可以通过这样“命名”它们来减少这个钩子中的负载吗?[com.company shortcode attr=\"attr\" prop=\"prop\"] 有人尝试过这样的解决方案吗