2015-08-21 2 views
-1

Я пытаюсь загрузить пользовательские шрифты Google с помощью короткого кода, у меня есть [gfont gfont = ""] Text [/ gfont], так что в основном вот что я делаю ...Wordpress - Сделайте Google Fonts Array до окончательного вывода Shortcode

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'); 

выше код работает отлично только один конкретный шрифт, который я использую, я имею в виду шорткод будет работать только в его регистрации стиля один раз ..

Теперь мой вопрос: Я должен был проверить, сколько раз этот короткий код [gfont] использовался на странице перед выходом, поэтому вместо того, чтобы использовать URL-адреса multipe для извлечения Google Fonts, я хочу создать массив всех используемых шрифтов Google и используйте только 1 URL-адрес:

wp_register_style ('GoogleFonts', 'http://fonts.googleapis.com/css?family=' .ARRAY_OF_GOOGLE_FONTS. ''); // правильно отформатирован

.. поэтому в основном я буду хранить глобальную переменную (скорее всего), где она добавит все шрифты Google, используемые на странице, а затем сделает один простой форматированный URL-адрес для загрузки всех их всех вместе. Пожалуйста, порекомендуйте.

благодаря

ответ

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'); 
} 
+0

Спасибо .. где он говорит «gfont» в $ arr его в основном «google_font» он был частью более крупного короткого кода, поэтому я просто сдержал часть и забыл изменить gfont на «google_font» .. но вопрос в том, что если я использую этот короткий код 4 раза, его единственный выход register_style один раз, а не для 4 разных шрифтов, которые я использовал в разных местах моей страницы. Как я могу получить доступ к короткому коду перед выходом, чтобы я мог изменять и создавать массив из всех шрифтов, а затем register_style ... – user1718343

Смежные вопросы