File: /var/www/html/insiders/wp-load/wp-content/themes/breadly/functions.php
<?php
/*//////////////////////////////////////
// Load Modules
//////////////////////////////////////*/
// Lib
include get_theme_file_path( '/lib/bootstrap.php' );
// Includes for theme
include get_theme_file_path( '/inc/gutenmate-fallback.php' );
include get_theme_file_path( '/plugins/plugin-activation.php' );
/**
* Functions
*/
add_action( 'after_setup_theme', 'gtmt_setup_theme' );
function gtmt_setup_theme() {
add_theme_support( 'title-tag' );
add_theme_support( 'automatic-feed-links' );
add_theme_support( 'post-formats', ['video', 'audio', 'gallery'] );
add_theme_support( 'responsive-embeds' );
/* Support gutenberg features */
add_theme_support( 'align-wide' );
add_theme_support( 'custom-spacing' );
add_theme_support( 'custom-units' );
add_theme_support( 'wp-block-styles' );
add_theme_support( 'appearance-tools' );
/* Support gutenmate features */
add_theme_support( 'gutenmate-recipe-summary' );
add_theme_support( 'gutenmate-place-summary' );
add_theme_support( 'gutenmate-event-summary' );
add_theme_support( 'gutenmate-woocommerce' );
/* Support WooCommerce features */
add_theme_support( 'woocommerce', [
'thumbnail_image_width' => 600,
'gallery_thumbnail_image_width' => 210,
'single_image_width' => 823,
] );
/* Support AMP features */
add_theme_support( 'amp', [
'paired' => true,
] );
add_theme_support( 'gutenmate-image-sizes', [
['enable' => true, 'name' => 'breadly_thumbnail', 'width' => 60, 'height' => 60, 'crop' => true],
['enable' => true, 'name' => 'breadly_small', 'width' => 256, 'height' => 170, 'crop' => true],
['enable' => true, 'name' => 'breadly_medium', 'width' => 538, 'height' => 358, 'crop' => true],
['enable' => true, 'name' => 'breadly_large', 'width' => 750, 'height' => 500, 'crop' => true],
/* Ratio 1.4 */
['enable' => true, 'name' => 'breadly_tall', 'width' => 538, 'height' => 717, 'crop' => true],
['enable' => true, 'name' => 'breadly_tall_large', 'width' => 744, 'height' => 992, 'crop' => true],
] );
add_theme_support( 'gutenmate-spacing', [
[
'name' => esc_html__( 'Auto', 'breadly' ),
'slug' => 'auto',
'size' => 'auto',
],
[
'name' => esc_html__( 'Zero', 'breadly' ),
'slug' => 'zero',
'size' => '0px',
],
[
'name' => esc_html__( '4XS', 'breadly' ),
'slug' => '4xs',
'size' => '4px',
],
[
'name' => esc_html__( '3XS', 'breadly' ),
'slug' => '3xs',
'size' => '8px',
],
[
'name' => esc_html__( '2XS', 'breadly' ),
'slug' => '2xs',
'size' => '16px',
],
[
'name' => esc_html__( 'XS', 'breadly' ),
'slug' => 'xs',
'size' => '24px',
],
[
'name' => esc_html__( 'SM', 'breadly' ),
'slug' => 'sm',
'size' => '32px',
],
[
'name' => esc_html__( 'MD', 'breadly' ),
'slug' => 'md',
'size' => '40px',
],
[
'name' => esc_html__( 'LG', 'breadly' ),
'slug' => 'lg',
'size' => '48px',
],
[
'name' => esc_html__( 'XL', 'breadly' ),
'slug' => 'xl',
'size' => '56px',
],
[
'name' => esc_html__( '2XL', 'breadly' ),
'slug' => '2xl',
'size' => '64px',
],
[
'name' => esc_html__( '3XL', 'breadly' ),
'slug' => '3xl',
'size' => '72px',
],
[
'name' => esc_html__( '4XL', 'breadly' ),
'slug' => '4xl',
'size' => '80px',
],
] );
add_theme_support( 'gutenmate-font-families', [
[
'name' => esc_html__( 'Heading', 'breadly' ),
'slug' => 'heading',
'fontFamily' => 'Vollkorn',
'preloadFontWeight' => '400,500,600,700,800',
],
[
'name' => esc_html__( 'Body', 'breadly' ),
'slug' => 'body',
'fontFamily' => 'Lexend Deca',
'preloadFontWeight' => '300,400,500,700',
],
] );
add_theme_support( 'gutenmate-typography', [
[
'name' => esc_html__( 'Heading 1', 'breadly' ),
'slug' => 'heading-1',
'font-family' => 'var(--gtm--font-family--heading)',
'font-weight' => '600',
'font-size' => 'var(--wp--preset--font-size--4-xl)',
'line-height' => '1.15',
'letter-spacing' => '0px',
'text-transform' => 'none',
],
[
'name' => esc_html__( 'Heading 2', 'breadly' ),
'slug' => 'heading-2',
'font-family' => 'var(--gtm--font-family--heading)',
'font-weight' => '600',
'font-size' => 'var(--wp--preset--font-size--3-xl)',
'line-height' => '1.15',
'letter-spacing' => '0px',
'text-transform' => 'none',
],
[
'name' => esc_html__( 'Heading 3', 'breadly' ),
'slug' => 'heading-3',
'font-family' => 'var(--gtm--font-family--heading)',
'font-weight' => '600',
'font-size' => 'var(--wp--preset--font-size--2-xl)',
'line-height' => '1.15',
'letter-spacing' => '0px',
'text-transform' => 'none',
],
[
'name' => esc_html__( 'Heading 4', 'breadly' ),
'slug' => 'heading-4',
'font-family' => 'var(--gtm--font-family--heading)',
'font-weight' => '600',
'font-size' => 'var(--wp--preset--font-size--xl)',
'line-height' => '1.15',
'letter-spacing' => '0px',
'text-transform' => 'none',
],
[
'name' => esc_html__( 'Heading 5', 'breadly' ),
'slug' => 'heading-5',
'font-family' => 'var(--gtm--font-family--heading)',
'font-weight' => '600',
'font-size' => 'var(--wp--preset--font-size--lg)',
'line-height' => '1.15',
'letter-spacing' => '0px',
'text-transform' => 'none',
],
[
'name' => esc_html__( 'Heading 6', 'breadly' ),
'slug' => 'heading-6',
'font-family' => 'var(--gtm--font-family--heading)',
'font-weight' => '600',
'font-size' => 'var(--wp--preset--font-size--md)',
'line-height' => '1.15',
'letter-spacing' => '0px',
'text-transform' => 'none',
],
[
'name' => esc_html__( 'Main menu', 'breadly' ),
'slug' => 'main-menu',
'font-family' => 'var(--gtm--font-family--body)',
'font-weight' => '600',
'font-size' => [
'lg' => 'var(--wp--preset--font-size--2-xl)',
],
'line-height' => '1.2',
],
] );
add_theme_support( 'gutenmate-theme-info', [
'docUrl' => 'https://envirra.github.io/docs/themes/breadly',
'logoUrl' => get_theme_file_uri( '/assets/img/theme-info-logo.png' ),
'thumbnailUrl' => get_theme_file_uri( '/assets/img/theme-info-thumbnail.png' ),
] );
/* Post type support */
add_post_type_support( 'page', 'excerpt' );
/* Register block styles */
register_block_style( 'gtm/box', [
'name' => 'breadly--gtm-box--area',
'label' => esc_html__( 'Area', 'breadly' ),
] );
register_block_style( 'gtm/box', [
'name' => 'breadly--gtm-box--cover-area',
'label' => esc_html__( 'Cover area', 'breadly' ),
] );
register_block_style( 'gtm/box', [
'name' => 'breadly--gtm-box--archive-title',
'label' => esc_html__( 'Archive title', 'breadly' ),
] );
register_block_style( 'gtm/box', [
'name' => 'breadly--gtm-box--bg-1',
'label' => esc_html__( 'Background 1', 'breadly' ),
] );
register_block_style( 'gtm/grid-tile', [
'name' => 'breadly--gtm-grid-tile--logo-hero',
'label' => esc_html__( 'Logo hero', 'breadly' ),
] );
register_block_style( 'gtm/grid-tile', [
'name' => 'breadly--gtm-grid-tile--logo-hero-2',
'label' => esc_html__( 'Logo hero 2', 'breadly' ),
] );
register_block_style( 'gtm/grid-tile', [
'name' => 'breadly--gtm-grid-tile--image-hero-1',
'label' => esc_html__( 'Image Hero 1', 'breadly' ),
] );
register_block_style( 'gtm/grid-tile', [
'name' => 'breadly--gtm-grid-tile--image-hero-2',
'label' => esc_html__( 'Image Hero 2', 'breadly' ),
] );
register_block_style( 'gtm/post-featured-image', [
'name' => 'breadly--gtm-post-featured-image--slide',
'label' => esc_html__( 'Slide', 'breadly' ),
] );
register_block_style( 'gtm/post-share', [
'name' => 'breadly--gtm-post-share--themed',
'label' => esc_html__( 'Themed', 'breadly' ),
] );
register_block_style( 'gtm/post-template', [
'name' => 'breadly--gtm-post-template--masonry',
'label' => esc_html__( 'Masonry', 'breadly' ),
] );
register_block_style( 'gtm/terms', [
'name' => 'breadly--gtm-terms--themed',
'label' => esc_html__( 'Themed', 'breadly' ),
] );
register_block_style( 'core/list', [
'name' => 'breadly--core-list--links',
'label' => esc_html__( 'Links', 'breadly' ),
] );
register_block_style( 'core/query-title', [
'name' => 'breadly--core-query-title--page-title',
'label' => esc_html__( 'Page title', 'breadly' ),
] );
register_block_style( 'core/query-pagination', [
'name' => 'breadly--core-query-pagination--themed',
'label' => esc_html__( 'Themed', 'breadly' ),
] );
register_block_style( 'core/avatar', [
'name' => 'breadly--core-avatar--meta',
'label' => esc_html__( 'Meta', 'breadly' ),
] );
/**
* Regiter pattern categories
*/
register_block_pattern_category( 'gtmt-content', ['label' => esc_html__( 'Breadly content', 'breadly' )] );
/**
* Register block patterns
*/
gtmt_register_block_pattern( 'gtmt/wide-content', [
'title' => esc_html__( 'Wide content', 'breadly' ),
'categories' => ['gtmt-content'],
'keywords' => ['blog', 'post'],
'blockTypes' => ['gtm/content-area'],
'content' => 'breadly//pattern-wide-content',
] );
gtmt_register_block_pattern( 'gtmt/recipe-content', [
'title' => esc_html__( 'Recipe content', 'breadly' ),
'categories' => ['gtmt-content'],
'keywords' => ['blog', 'post'],
'blockTypes' => ['gtm/content-area'],
'content' => 'breadly//pattern-recipe-content',
] );
gtmt_register_block_pattern( 'gtmt/wide-recipe-content', [
'title' => esc_html__( 'Wide recipe content', 'breadly' ),
'categories' => ['gtmt-content'],
'keywords' => ['blog', 'post'],
'blockTypes' => ['gtm/content-area'],
'content' => 'breadly//pattern-wide-recipe-content',
] );
gtmt_register_block_pattern( 'gtmt/review-content', [
'title' => esc_html__( 'Review content', 'breadly' ),
'categories' => ['gtmt-content'],
'keywords' => ['blog', 'post'],
'blockTypes' => ['gtm/content-area'],
'content' => 'breadly//pattern-review-content',
] );
gtmt_register_block_pattern( 'gtmt/wide-review-content', [
'title' => esc_html__( 'Wide review content', 'breadly' ),
'categories' => ['gtmt-content'],
'keywords' => ['blog', 'post'],
'blockTypes' => ['gtm/content-area'],
'content' => 'breadly//pattern-wide-review-content',
] );
}
add_action( 'init', 'gtmt_setup_assets' );
function gtmt_setup_assets() {
wp_register_style( 'gutenmate-web', get_theme_file_uri( '/style.css' ), [], GTMT_VERSION );
wp_style_add_data( "gutenmate-web", 'rtl', 'replace' );
wp_register_style( 'gutenmate-web-blocks', get_theme_file_uri( '/blocks.css' ), [], GTMT_VERSION );
wp_style_add_data( "gutenmate-web-blocks", 'rtl', 'replace' );
wp_register_style( 'gutenmate-woocommerce', get_theme_file_uri( '/woocommerce.css' ), [], GTMT_VERSION );
// Enqueue block style extensions
foreach ( glob( __DIR__ . "/block-css/*.css" ) as $filename ) {
$filename = basename( $filename );
if ( strpos( $filename, '-rtl.' ) !== false ) {
continue;
}
if ( strpos( $filename, '.min.' ) !== false ) {
continue;
}
$name = basename( $filename, '.css' );
wp_enqueue_block_style( preg_replace( '/-/', '/', $name, 1 ), ['handle' => "gtm-extend-$name", 'src' => get_theme_file_uri( "/block-css/$filename" )] );
// Use the same style
if ( $name == 'core-quote' ) {
$name = 'core-pullquote';
wp_enqueue_block_style( preg_replace( '/-/', '/', $name, 1 ), ['handle' => "gtm-extend-$name", 'src' => get_theme_file_uri( "/block-css/$filename" )] );
}
}
}
add_action( 'wp_enqueue_scripts', 'gtmt_enqueue_assets' );
function gtmt_enqueue_assets() {
wp_enqueue_style( 'gutenmate-web' );
wp_enqueue_style( 'gutenmate-web-blocks' );
}
// Enqueue WooCommerce style when perform it's shortcode
add_filter( 'do_shortcode_tag', 'gtmt_enqueue_woocommerce_shortcode_assets', 10, 3 );
function gtmt_enqueue_woocommerce_shortcode_assets( $output, $tag, $attr ) {
if ( in_array( $tag, ['woocommerce_checkout', 'woocommerce_cart', 'woocommerce_my_account'] ) ) {
add_action( 'wp_enqueue_scripts', 'gtmt_enqueue_woocommerce_assets' );
}
return $output;
}
add_action( 'wp_enqueue_scripts', 'gtmt_enqueue_woocommerce_assets' );
function gtmt_enqueue_woocommerce_assets() {
if ( function_exists( 'is_woocommerce' ) ) {
if ( is_woocommerce() || is_checkout() || is_cart() || is_account_page() ) {
wp_enqueue_style( 'gutenmate-woocommerce' );
}
}
}
add_action( 'admin_init', 'gtmt_add_editor_styles' );
function gtmt_add_editor_styles() {
add_editor_style( 'editor-style.css' );
}
add_action( 'enqueue_block_assets', 'gtmt_enqueue_theme_block_assets', 11 );
function gtmt_enqueue_theme_block_assets() {
wp_enqueue_style( 'gutenmate-web-blocks' );
}
add_filter( 'default_wp_template_part_areas', 'gtmt_add_template_part_areas' );
function gtmt_add_template_part_areas( $areas ) {
// Gutenmate's area
$areas[] = [
'area' => 'gtm-area-review',
'icon' => 'symbolFilled',
'label' => esc_html__( 'Review', 'breadly' ),
'description' => esc_html__(
'The template defines a review area.',
'breadly'
),
'area_tag' => 'div',
];
$areas[] = [
'area' => 'gtm-area-recipe',
'icon' => 'symbolFilled',
'label' => esc_html__( 'Recipe', 'breadly' ),
'description' => esc_html__(
'The template defines an recipe area.',
'breadly'
),
'area_tag' => 'div',
];
$areas[] = [
'area' => 'gtm-area-nutrition',
'icon' => 'symbolFilled',
'label' => esc_html__( 'Nutrition', 'breadly' ),
'description' => esc_html__(
'The template defines an nutrition area.',
'breadly'
),
'area_tag' => 'div',
];
// Theme's area
$areas[] = [
'area' => 'home',
'icon' => 'symbolFilled',
'label' => esc_html__( 'Home', 'breadly' ),
'description' => esc_html__(
'The template defines a home area for site.',
'breadly'
),
'area_tag' => 'div',
];
$areas[] = [
'area' => 'archive',
'icon' => 'symbolFilled',
'label' => esc_html__( 'Archive', 'breadly' ),
'description' => esc_html__(
'The template defines an archive area for site.',
'breadly'
),
'area_tag' => 'div',
];
$areas[] = [
'area' => 'navigation',
'icon' => 'symbolFilled',
'label' => esc_html__( 'Navigation', 'breadly' ),
'description' => esc_html__(
'The template defines a navigation area for site.',
'breadly'
),
'area_tag' => 'div',
];
$areas[] = [
'area' => 'sidebar',
'icon' => 'symbolFilled',
'label' => esc_html__( 'Sidebar', 'breadly' ),
'description' => esc_html__(
'The Footer template defines a page area that typically contains site credits, social links, or any other combination of blocks.',
'breadly'
),
'icon' => 'sidebar',
'area_tag' => 'aside',
];
$areas[] = [
'area' => 'single-page',
'icon' => 'symbolFilled',
'label' => esc_html__( 'Single page', 'breadly' ),
'description' => esc_html__(
'The template defines a single page area.',
'breadly'
),
'area_tag' => 'div',
];
$areas[] = [
'area' => 'single-post',
'icon' => 'symbolFilled',
'label' => esc_html__( 'Single post', 'breadly' ),
'description' => esc_html__(
'The template defines a single post area.',
'breadly'
),
'area_tag' => 'div',
];
$areas[] = [
'area' => 'post',
'icon' => 'symbolFilled',
'label' => esc_html__( 'Post area', 'breadly' ),
'description' => esc_html__(
'The template defines a post element area for blog.',
'breadly'
),
'area_tag' => 'div',
];
$areas[] = [
'area' => 'post-meta',
'icon' => 'symbolFilled',
'label' => esc_html__( 'Post meta', 'breadly' ),
'description' => esc_html__(
'The template defines a post meta area for post.',
'breadly'
),
'area_tag' => 'div',
];
return $areas;
}
add_action( 'init', 'gtmt_register_theme_icon_set' );
function gtmt_register_theme_icon_set() {
wp_register_style( 'breadly-icons', get_theme_file_uri( '/assets/breadly-icons/breadly-icon.css' ), [], GTMT_VERSION );
if ( class_exists( 'GTM_Icon_Set' ) ) {
GTM_Icon_Set::register( [
"slug" => "breadly-icons",
"name" => esc_html__( "Breadly Icons", 'breadly' ),
"description" => "Breadly theme's icons",
"link" => get_theme_file_uri( '/assets/breadly-icons/breadly-icon.html' ),
"enqueue_style" => "breadly-icons",
"meta" => get_template_directory() . '/assets/breadly-icons/breadly-icons.json',
] );
}
// Activate theme's icon set
add_theme_support( 'gutenmate-icon-sets', ['gtm-basic-icons', 'breadly-icons'] );
}
add_filter( 'excerpt_length', 'gtmt_default_excerpt_length', 10 );
function gtmt_default_excerpt_length( $number ) {
return 40;
}