jett-theme/functions.php

191 lines
4.8 KiB
PHP

<?php
// enqueue custom css on front-end and editor
function jett_editor_css() {
add_editor_style( get_theme_file_uri('/assets/css/custom.css') );
}
add_action( 'after_setup_theme', 'jett_editor_css' );
function jett_frontend_css() {
wp_enqueue_style('jett_css', get_theme_file_uri('/assets/css/custom.css'));
}
add_action('wp_enqueue_scripts', 'jett_frontend_css');
// define block styles
function jett_block_styles() {
register_block_style(
'core/heading',
array(
'name' => 'gradient',
'label' => __( 'Gradient', 'jett' ),
'inline_style' => '
.wp-block-heading.is-style-gradient {
background: var(--wp--preset--gradient--violet-to-green);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
line-height: 1.1;
}
'
)
);
register_block_style(
'core/paragraph',
array(
'name' => 'gradient',
'label' => __( 'Gradient', 'jett' ),
'inline_style' => '
p.is-style-gradient {
background: var(--wp--preset--gradient--violet-to-green);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
line-height: 1.1;
}
'
)
);
register_block_style(
'core/list',
array(
'name' => 'arrow',
'label' => __( 'Arrow', 'lex-scotland' ),
'inline_style' => '
ul.is-style-arrow {
list-style: none;
}
ul.is-style-arrow div {
display: inline;
}
ul.is-style-arrow li::before {
content: "→";
margin-right: 0.5em;
font-weight: bold;
}
'
)
);
register_block_style(
'core/post-terms',
array(
'name' => 'hashtags',
'label' => __('Hashtags', 'lex-scotland'),
'inline_style' => '
.is-style-hashtags.taxonomy-post_tag.wp-block-post-terms a::before {
content: "#";
}
.is-style-hashtags.taxonomy-post_tag.wp-block-post-terms a {
background: var(--wp--preset--color--black);
padding: .5rem;
display: inline-block;
color: white;
font-family: var(--wp--preset--font-family--instrument-sans);
text-decoration: none;
margin-right: 5px;
margin-bottom: 5px;
font-size: 13px;
font-weight: 500;
border: 1px solid var(--wp--preset--color--black);
}
.is-style-hashtags.taxonomy-post_tag.wp-block-post-terms a:hover {
background: var(--wp--preset--gradient--violet-to-green);
color: var(--wp--preset--color--black);
}
'
)
);
}
add_action( 'init', 'jett_block_styles' );
/* Remove default CSS variables that come with Wordpress
https://github.com/WordPress/gutenberg/issues/56180#issuecomment-1819222376
*/
function custom_wp_theme_json_default( $theme_json ) {
$new_data = array(
'version' => 2,
'settings' => array(
'color' => array(
'palette' => array(),
'gradients' => array(),
),
'shadow' => array(
'presets' => array(),
),
'typography' => array(
'fontSizes' => array(),
),
// 'dimensions' => array(
// 'aspectRatios' => array(),
// ),
// 'spacing' => array(
// 'spacingScale' => array(
// 'steps' => 0,
// ),
// ),
),
);
return $theme_json->update_with( $new_data );
}
add_filter( 'wp_theme_json_data_default', 'custom_wp_theme_json_default' );
// enable svg uploads
add_filter( 'wp_check_filetype_and_ext', function($data, $file, $filename, $mimes) {
global $wp_version;
if ( $wp_version !== '4.7.1' ) {
return $data;
}
$filetype = wp_check_filetype( $filename, $mimes );
return [
'ext' => $filetype['ext'],
'type' => $filetype['type'],
'proper_filename' => $data['proper_filename']
];
}, 10, 4 );
function cc_mime_types($mimes) {
$mimes['svg'] = 'image/svg+xml';
return $mimes;
}
add_filter('upload_mimes', 'cc_mime_types');
// remove current post from related posts query loop
add_filter( 'query_loop_block_query_vars', function( $query_vars, $block ) {
if ( isset( $block->attributes['metadata']['name'] ) && $block->attributes['metadata']['name'] === 'Related Post' ) {
$query_vars['post__not_in'] = array( get_the_ID() );
}
return $query_vars;
}, 10, 2 );
function jett_remove_current_from_queries( $query_vars, $block ) {
do_action( 'qm/debug', $block->parsed_block );
if ( 'related-post' === $block->parsed_block['attrs']['className'] )
$query_vars['post__not_in'] = array( get_the_ID() );
return $query_vars;
}
add_filter( 'query_loop_block_query_vars', 'jett_remove_current_from_queries', 10, 2 );
// Remove default block patterns
add_action('init', function() {
remove_theme_support('core-block-patterns');
}, 9 );
// Register custom pattern categories
if ( function_exists( 'register_block_pattern_category' ) ) {
register_block_pattern_category(
'jett',
array( 'label' => __( 'JETT', 'jett' ) )
);
register_block_pattern_category(
'jett_full_page_layouts',
array( 'label' => __( 'Page Layouts', 'jett' ) )
);
}