HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
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;
}