You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
147 lines
3.6 KiB
PHP
147 lines
3.6 KiB
PHP
<?php
|
|
/**
|
|
* Helper class for font settings.
|
|
*
|
|
* @package Bsf_Custom_Fonts
|
|
* @since 2.0.0
|
|
*/
|
|
|
|
// Exit if accessed directly.
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit;
|
|
}
|
|
|
|
/**
|
|
* Font info class for System and Google fonts.
|
|
*/
|
|
if ( ! class_exists( 'BCF_Custom_Font_Families' ) ) :
|
|
|
|
/**
|
|
* Font info class for System and Google fonts.
|
|
*/
|
|
final class BCF_Custom_Font_Families {
|
|
|
|
/**
|
|
* Google Fonts
|
|
*
|
|
* @since 1.0.19
|
|
* @var array
|
|
*/
|
|
public static $google_fonts = array();
|
|
|
|
/**
|
|
* Variant labels.
|
|
*
|
|
* @since 2.0.0
|
|
* @return array
|
|
*/
|
|
public static function get_font_weight_list() {
|
|
return array(
|
|
'100' => __( '100 Thin', 'custom-fonts' ),
|
|
'200' => __( '200 Extra Light', 'custom-fonts' ),
|
|
'300' => __( '300 Light', 'custom-fonts' ),
|
|
'400' => __( '400 Regular', 'custom-fonts' ),
|
|
'500' => __( '500 Medium', 'custom-fonts' ),
|
|
'600' => __( '600 Semi-Bold', 'custom-fonts' ),
|
|
'700' => __( '700 Bold', 'custom-fonts' ),
|
|
'800' => __( '800 Extra-Bold', 'custom-fonts' ),
|
|
'900' => __( '900 Ultra-Bold', 'custom-fonts' ),
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Get existing Google Fonts to strip from dropdown list from add new.
|
|
*
|
|
* @since 2.0.0
|
|
*
|
|
* @return Array Array of existing Google fonts.
|
|
*/
|
|
public static function get_existing_google_fonts() {
|
|
$args = array(
|
|
'post_type' => BSF_CUSTOM_FONTS_POST_TYPE,
|
|
'post_status' => 'publish',
|
|
'fields' => 'ids',
|
|
'no_found_rows' => true,
|
|
'posts_per_page' => '-1',
|
|
'meta_query' => array(
|
|
array(
|
|
'key' => 'font-type',
|
|
'value' => 'google',
|
|
'compare' => '=',
|
|
),
|
|
),
|
|
);
|
|
$google_fonts = array();
|
|
$query = new WP_Query( $args );
|
|
|
|
if ( $query->posts ) {
|
|
foreach ( $query->posts as $key => $post_id ) {
|
|
$google_fonts[] = get_the_title( $post_id );
|
|
}
|
|
wp_reset_postdata();
|
|
}
|
|
|
|
return $google_fonts;
|
|
}
|
|
|
|
/**
|
|
* Google Fonts used in Bsf Custom Fonts.
|
|
* Array is generated from the google-fonts.json file.
|
|
*
|
|
* @since 2.0.0
|
|
*
|
|
* @return Array Array of Google Fonts.
|
|
*/
|
|
public static function get_google_fonts() {
|
|
|
|
if ( ! empty( self::$google_fonts ) ) {
|
|
return apply_filters( 'bsf_custom_font_google_fonts', self::$google_fonts );
|
|
}
|
|
|
|
/**
|
|
* Deprecating the Filter to change the Google Fonts JSON file path.
|
|
*
|
|
* @since 2.0.0
|
|
* @param string $json_file File where google fonts json format added.
|
|
* @return array
|
|
*/
|
|
$google_fonts_file = apply_filters( 'bsf_custom_font_google_fonts_php_file', BSF_CUSTOM_FONTS_DIR . 'assets/fonts/google-fonts.php' );
|
|
|
|
if ( ! file_exists( $google_fonts_file ) ) {
|
|
return array();
|
|
}
|
|
|
|
$google_fonts_arr = include $google_fonts_file;// phpcs:ignore: WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound
|
|
foreach ( $google_fonts_arr as $key => $font ) {
|
|
$name = key( $font );
|
|
foreach ( $font[ $name ] as $font_key => $single_font ) {
|
|
|
|
if ( 'variants' === $font_key ) {
|
|
foreach ( $single_font as $variant_key => $variant ) {
|
|
if ( 'regular' == $variant ) {
|
|
$font[ $name ][ $font_key ][ $variant_key ] = '400';
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( 'files' === $font_key ) {
|
|
foreach ( $single_font as $file_key => $var ) {
|
|
if ( 'regular' == $file_key ) {
|
|
$font[ $name ][ $font_key ]['400'] = $var;
|
|
unset( $font[ $name ][ $font_key ]['regular'] );
|
|
} else {
|
|
$font[ $name ][ $font_key ][ $file_key ] = $var;
|
|
}
|
|
}
|
|
}
|
|
|
|
self::$google_fonts[ $name ] = array_values( $font[ $name ] );
|
|
}
|
|
}
|
|
|
|
return apply_filters( 'bsf_custom_font_google_fonts', self::$google_fonts );
|
|
}
|
|
}
|
|
|
|
endif;
|