Wordpress - 在最终输出短代码之前制作Google字体数组

时间:2015-08-21 16:47:41

标签: wordpress

我正在尝试使用短代码加载自定义Google字体,我有一个[gfont gfont =""] Text [/ gfont],所以基本上这就是我正在做的...

function gfont_function($arr, $content = null ) {
    extract(shortcode_atts(array(
        'gfont' => ''
    ), $arr));

    if(isset($arr['google_font'])) {
        if($arr['google_font'] != "") {
            $font_family = 'font-family:'.$arr['google_font'].', Helvetica, Verdana;';
            $gfont = str_replace(' ', '+', $arr['google_font']);
            wp_register_style('GoogleFonts', 'http://fonts.googleapis.com/css?family='.$gfont.''); 
            wp_enqueue_style('GoogleFonts');
        }
    }
    $data = '<div style="'.$font_family.'">
                    '.$content.'
            </div>';

    return $data;
 }
 add_shortcode('gfont', 'gfont_function');

上面的代码只适用于我使用的1种特定字体,我的意思是短代码只能用于注册一次的样式..

现在我的问题是: 我要查看在输出之前页面上使用了这个短代码[gfont]的次数,所以我不想使用多重网址来获取Google字体,而是想制作一个所有使用过的Google字体的数组,并且只使用1个网址,像这样的东西:

wp_register_style(&#39; GoogleFonts&#39;,&#39; http://fonts.googleapis.com/css?family=&#39; .ARRAY_OF_GOOGLE_FONTS。&#39;&#39;); //格式正确

..所以基本上我将保留一个全局变量(最有可能),它将添加页面上使用的所有Google字体,然后制作一个简单的格式化URL以将所有这些加在一起。请指教。

感谢

1 个答案:

答案 0 :(得分:0)

您定义的短代码很奇怪...但是,如果您必须这样做,您可以将这些队列包裹在wp_style_is()中:

// If the font hasn't already been enqueued, enqueue it
if ( ! wp_style_is( 'GoogleFonts', 'enqueued' ) ) {
    wp_register_style('GoogleFonts', 'http://fonts.googleapis.com/css?family='.$gfont.''); 
    wp_enqueue_style('GoogleFonts');
}