/** * Print the font sets to load them from Google */ function pix_font_set() { $fonts = array(); $json = pix_get_google_font_list(); $decoded = json_decode($json); $google_array = array(); $google_families = array(); foreach ($decoded->items as $item) { $family = $item->family; array_push($google_families, $family); $google_array[$family]['variants'] = $item->variants; $google_array[$family]['subsets'] = $item->subsets; } /*general font*/ $body_font = get_theme_mod('pix_typography_font_custom') != '' ? get_theme_mod('pix_typography_font_custom') : get_theme_mod('pix_typography_font'); if ($body_font != '' && in_array($body_font, $google_families)) { $fonts[$body_font]['variants'] = $google_array[$body_font]['variants']; $body_font_subsets = get_theme_mod('pix_typography_font_subsets'); $body_font_subsets = is_array($body_font_subsets) ? $body_font_subsets : array($body_font_subsets); $fonts[$body_font]['subsets'] = $body_font_subsets; } $options = array('sitetitle', 'tagline', 'nav', 'floating_side', 'footer', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'meta', 'widget_titles', 'widget_li', 'buttons', 'code'); foreach ($options as $option) { $font = get_theme_mod('pix_typography_' . $option . '_font_custom') != '' ? get_theme_mod('pix_typography_' . $option . '_font_custom') : get_theme_mod('pix_typography_' . $option . '_font'); if ($font != '' && in_array($font, $google_families)) { $variant = get_theme_mod('pix_typography_' . $option . '_font_weight'); if (!isset($fonts[$font]['variants'])) { $fonts[$font]['variants'] = array(); } if (!in_array($variant, $fonts[$font]['variants'])) { array_push($fonts[$font]['variants'], $variant); } $subsets = get_theme_mod('pix_typography_' . $option . '_font_subsets'); $subsets = is_array($subsets) ? $subsets : array($subsets); if (!isset($fonts[$font]['subsets'])) { $fonts[$font]['subsets'] = array(); } if (!in_array($subsets, $fonts[$font]['subsets'])) { foreach ($subsets as $subset) { array_push($fonts[$font]['subsets'], $subset); } } } } $site_font = ''; foreach ($fonts as $font => $vars) { $site_font .= '"' . str_replace(' ', '+', esc_js($font)); $site_font .= ':'; $site_font .= str_replace('regular', '400', esc_js(implode(array_unique($vars['variants']), ','))); $site_font .= ':'; $site_font .= esc_js(implode(array_unique($vars['subsets']), ',')) . '",'; } return $site_font; }
public function render_content() { $json = pix_get_google_font_list(); $decoded = json_decode($json); ?> <?php if ($this->field == 'family') { ?> <label> <span class="customize-control-title"> <?php echo esc_attr($this->label); ?> <?php if (!empty($this->description)) { ?> <?php // The description has already been sanitized in the Fields class, no need to re-sanitize it. ?> <span class="description customize-control-description"><?php echo $this->description; ?> </span> <?php } ?> </span> <select <?php $this->link(); ?> class="chosen-select select2 select-font-family"> <option value="initial" data-variants="400,700," data-subsets="all," <?php selected($this->value(), "initial"); ?> ><?php _e('None (for CSS customisations)', 'twentyfifteen-child'); ?> </option> <optgroup label="<?php _e('Web-safe fonts', 'twentyfifteen-child'); ?> "> <option value='Georgia, serif' data-variants="400,700," data-subsets="all," <?php selected($this->value(), 'Georgia, serif'); ?> >Georgia, serif</option> <option value='"Palatino Linotype", "Book Antiqua", Palatino, serif' data-variants="400,700," data-subsets="all," <?php selected($this->value(), '"Palatino Linotype", "Book Antiqua", Palatino, serif'); ?> >"Palatino Linotype", "Book Antiqua", Palatino, serif</option> <option value='"Times New Roman", Times, serif' data-variants="400,700," data-subsets="all," <?php selected($this->value(), '"Times New Roman", Times, serif'); ?> >"Times New Roman", Times, serif</option> <option value='Arial, Helvetica, sans-serif' data-variants="400,700," data-subsets="all," <?php selected($this->value(), 'Arial, Helvetica, sans-serif'); ?> >Arial, Helvetica, sans-serif</option> <option value='"Arial Black", Gadget, sans-serif' data-variants="400,700," data-subsets="all," <?php selected($this->value(), '"Arial Black", Gadget, sans-serif'); ?> >"Arial Black", Gadget, sans-serif</option> <option value='"Comic Sans MS", cursive, sans-serif' data-variants="400,700," data-subsets="all," <?php selected($this->value(), '"Comic Sans MS", cursive, sans-serif'); ?> >"Comic Sans MS", cursive, sans-serif</option> <option value='Impact, Charcoal, sans-serif' data-variants="400,700," data-subsets="all," <?php selected($this->value(), 'Impact, Charcoal, sans-serif'); ?> >Impact, Charcoal, sans-serif</option> <option value='"Lucida Sans Unicode", "Lucida Grande", sans-serif' data-variants="400,700," data-subsets="all," <?php selected($this->value(), '"Lucida Sans Unicode", "Lucida Grande", sans-serif'); ?> >"Lucida Sans Unicode", "Lucida Grande", sans-serif</option> <option value='Tahoma, Geneva, sans-serif' data-variants="400,700," data-subsets="all," <?php selected($this->value(), 'Tahoma, Geneva, sans-serif'); ?> >Tahoma, Geneva, sans-serif</option> <option value='"Trebuchet MS", Helvetica, sans-serif' data-variants="400,700," data-subsets="all," <?php selected($this->value(), '"Trebuchet MS", Helvetica, sans-serif'); ?> >"Trebuchet MS", Helvetica, sans-serif</option> <option value='Verdana, Geneva, sans-serif' data-variants="400,700," data-subsets="all," <?php selected($this->value(), 'Verdana, Geneva, sans-serif'); ?> >Verdana, Geneva, sans-serif</option> <option value='"Courier New", Courier, monospace' data-variants="400,700," data-subsets="all," <?php selected($this->value(), '"Courier New", Courier, monospace'); ?> >"Courier New", Courier, monospace</option> <option value='"Courier 10 Pitch", Courier, monospace' data-variants="400,700," data-subsets="all," <?php selected($this->value(), '"Courier 10 Pitch", Courier, monospace'); ?> >"Courier New", Courier, monospace</option> <option value='"Lucida Console", Monaco, monospace' data-variants="400,700," data-subsets="all," <?php selected($this->value(), '"Lucida Console", Monaco, monospace'); ?> >"Lucida Console", Monaco, monospace</option> </optgroup> <optgroup label="<?php _e('Google fonts', 'twentyfifteen-child'); ?> "> <?php foreach ($decoded->items as $item) { $family = $item->family; $variants = str_replace('regular', '400', implode(',', $item->variants)); $subsets = implode(',', $item->subsets); ?> <option value="<?php echo $family; ?> " data-variants="<?php echo $variants; ?> ," data-subsets="<?php echo $subsets; ?> ," <?php selected($this->value(), $family); ?> ><?php echo $family; ?> </option> <?php } ?> </optgroup> <?php if ($this->description != '') { ?> <br><span class="description customize-control-description"><?php echo $this->description; ?> </span> <?php } ?> </select> </label> <?php } elseif ($this->field == 'weight') { ?> <label> <span class="customize-control-title"> <?php echo esc_attr($this->label); ?> <?php if (!empty($this->description)) { ?> <?php // The description has already been sanitized in the Fields class, no need to re-sanitize it. ?> <span class="description customize-control-description"><?php echo $this->description; ?> </span> <?php } ?> </span> <select <?php $this->link()->weight; ?> class="chosen-select select2 select-font-weight"> <?php for ($i = 1; $i <= 10; $i++) { $n = $i * 100; ?> <option value="<?php echo $n; ?> " <?php selected($this->value()->weight, $n); ?> ><?php echo $n; ?> </option> <?php $n = $n == '400' ? '' : $n; ?> <option value="<?php echo $n . 'italic'; ?> " <?php selected($this->value()->weight, $n . 'italic'); ?> ><?php echo $n . 'italic'; ?> </option> <?php } ?> </select> </label> <?php } elseif ($this->field == 'subsets') { ?> <label> <span class="customize-control-title"> <?php echo esc_attr($this->label); ?> <?php if (!empty($this->description)) { ?> <?php // The description has already been sanitized in the Fields class, no need to re-sanitize it. ?> <span class="description customize-control-description"><?php echo $this->description; ?> </span> <?php } ?> </span> <?php $value = !is_array($this->value()->subsets) ? array($this->value()->subsets) : $this->value()->subsets; ?> <select <?php $this->link()->subsets; ?> class="chosen-select select2 select-font-subsets" multiple> <option value="latin" <?php selected(true, in_array('latin', $value)); ?> >latin</option> <option value="latin-ext" <?php selected(true, in_array('latin-ext', $value)); ?> >latin-ext</option> <option value="menu" <?php selected(true, in_array('menu', $value)); ?> >menu</option> <option value="greek" <?php selected(true, in_array('greek', $value)); ?> >greek</option> <option value="greek-ext" <?php selected(true, in_array('greek-ext', $value)); ?> >greek-ext</option> <option value="cyrillic" <?php selected(true, in_array('cyrillic', $value)); ?> >cyrillic</option> <option value="cyrillic-ext" <?php selected(true, in_array('cyrillic-ext', $value)); ?> >cyrillic-ext</option> <option value="vietnamese" <?php selected(true, in_array('vietnamese', $value)); ?> >vietnamese</option> <option value="arabic" <?php selected(true, in_array('arabic', $value)); ?> >arabic</option> <option value="khmer" <?php selected(true, in_array('khmer', $value)); ?> >khmer</option> <option value="lao" <?php selected(true, in_array('lao', $value)); ?> >lao</option> <option value="tamil" <?php selected(true, in_array('tamil', $value)); ?> >tamil</option> <option value="bengali" <?php selected(true, in_array('bengali', $value)); ?> >bengali</option> <option value="hindi" <?php selected(true, in_array('hindi', $value)); ?> >hindi</option> <option value="korean" <?php selected(true, in_array('korean', $value)); ?> >korean</option> </select> </label> <?php } ?> <script> jQuery(document).ready(function($) { $('.select2').select2(); }); </script> <?php }