haiku-atelier-2024/web/app/themes/haiku-atelier-2024/functions.php

197 lines
6.7 KiB
PHP
Executable file

<?php
declare(strict_types=1);
use Carbon_Fields\Carbon_Fields;
use HaikuAtelier\StarterSite;
use Timber\Timber;
use function wp_enqueue_script_module;
// Récupère les dépendances Composer
require_once __DIR__ . '../../../../../vendor/autoload.php';
require_once __DIR__ . '/src/StarterSite.php';
require_once __DIR__ . '/src/inc/ChampsPersonnalises.php';
require_once __DIR__ . '/src/inc/ControlesPersonnalises.php';
require_once __DIR__ . '/src/inc/Fonctionnalites.php';
require_once __DIR__ . '/src/inc/FonctionnalitesWooCommerce.php';
require_once __DIR__ . '/src/inc/Taxonomies.php';
// Initialise Timber
Timber::init();
// Sélectionne le répertoire contenant les modèles Twig
Timber::$dirname = ['views'];
// Charge les Scripts du thème (report d'erreurs)
function load_scripts(): void {
wp_enqueue_script_module(
id: 'haiku-atelier-2024-gaffe',
deps: [],
src: get_template_directory_uri() . '/assets/js/gaffe.js',
version: filemtime(get_template_directory() . '/assets/js/gaffe.js'),
);
wp_enqueue_script_module(
id: 'haiku-atelier-2024-bouton-panier',
deps: [],
src: get_template_directory_uri() . '/assets/js/scripts-bouton-panier.js',
version: filemtime(get_template_directory() . '/assets/js/scripts-bouton-panier.js'),
);
wp_enqueue_script_module(
id: 'haiku-atelier-2024-menu-mobile',
deps: [],
src: get_template_directory_uri() . '/assets/js/scripts-menu-mobile.js',
version: filemtime(get_template_directory() . '/assets/js/scripts-menu-mobile.js'),
);
wp_enqueue_script_module(
id: 'haiku-atelier-2024-bouton-retour-sommet',
deps: [],
src: get_template_directory_uri() . '/assets/js/scripts-bouton-retour-sommet.js',
version: filemtime(get_template_directory() . '/assets/js/scripts-bouton-retour-sommet.js'),
);
}
add_action('wp_enqueue_scripts', 'load_scripts');
// Charge les styles du thème
function charge_styles_haiku_atelier_2024(): void {
wp_enqueue_style(
handle: 'haiku-atelier-2024-styles',
src: get_template_directory_uri() . '/assets/css/main.css',
deps: [],
ver: filemtime(get_template_directory() . '/assets/css/main.css'),
media: 'all',
);
}
add_action('wp_enqueue_scripts', 'charge_styles_haiku_atelier_2024');
// Initialise les fonctionnalités du thème
new StarterSite();
/**
* Personnalisation du thème.
*
* @param mixed $wp_customize
*/
function enregistre_personnalisations_theme($wp_customize) {
// Section « Réseaux sociaux »
$wp_customize->add_section('liens_reseaux_sociaux', [
'title' => __('Liens des réseaux sociaux'),
'description' => __("Liens des réseaux sociaux s'affichant dans le pied de page."),
]);
// Instagram
$wp_customize->add_setting('lien_instagram', ['type' => 'theme_mod', 'capability' => 'edit_theme_options']);
$wp_customize->add_control('lien_instagram', [
'type' => 'url',
'section' => 'liens_reseaux_sociaux',
'label' => __('Profil Instagram'),
]);
// Facebook
$wp_customize->add_setting('lien_facebook', ['type' => 'theme_mod', 'capability' => 'edit_theme_options']);
$wp_customize->add_control('lien_facebook', [
'type' => 'url',
'section' => 'liens_reseaux_sociaux',
'label' => __('Profil Facebook'),
]);
// Pinterest
$wp_customize->add_setting('lien_pinterest', ['type' => 'theme_mod', 'capability' => 'edit_theme_options']);
$wp_customize->add_control('lien_pinterest', [
'type' => 'url',
'section' => 'liens_reseaux_sociaux',
'label' => __('Profil Pinterest'),
]);
// Section « Descriptions Produits »
$wp_customize->add_section('descriptions_produits', [
'title' => __('Textes des descriptions Produits'),
'description' => __('Textes des descriptions apparaissant sur les pages Produit.'),
]);
$wp_customize->add_setting('texte_conditions_livraison', [
'capability' => 'edit_theme_options',
'default' => '',
'sanitize_callback' => 'wp_kses_post',
'transport' => 'postMessage',
'type' => 'theme_mod',
]);
$wp_customize->add_control(new Controle_Personnalise_TinyMCE($wp_customize, 'texte_conditions_livraison', [
'label' => __('Conditions de livraison'),
'description' => __('Descriptif des conditions de livraison.'),
'section' => 'descriptions_produits',
'input_attrs' => [
'toolbar1' => 'bold italic bullist numlist alignleft aligncenter alignright link',
'mediaButtons' => true,
],
]));
$wp_customize->add_setting('texte_entretien_produit', [
'capability' => 'edit_theme_options',
'default' => '',
'sanitize_callback' => 'wp_kses_post',
'transport' => 'postMessage',
'type' => 'theme_mod',
]);
$wp_customize->add_control(new Controle_Personnalise_TinyMCE($wp_customize, 'texte_entretien_produit', [
'label' => __('Entretien du Produit'),
'description' => __("Descriptif des bonnes pratiques pour l'entretien du Produit."),
'section' => 'descriptions_produits',
'input_attrs' => [
'toolbar1' => 'bold italic bullist numlist alignleft aligncenter alignright link',
'mediaButtons' => true,
],
]));
}
add_action('customize_register', 'enregistre_personnalisations_theme');
function retire_tailles_image_par_defaut(mixed $sizes): mixed {
error_log(print_r($sizes, true));
/** @var array<string> */
$targets = ['full', 'thumbnail'];
foreach ($sizes as $size_index => $size) {
if (!in_array($size, $targets, true)) {
unset($sizes[$size_index]);
}
}
return $sizes;
}
add_filter('intermediate_image_sizes', 'retire_tailles_image_par_defaut', 10, 1);
add_filter('big_image_size_threshold', '__return_false');
// Désactive la mise à jour automatique des traductions
add_filter('async_update_translation', '__return_false');
add_filter('auto_update_translation', '__return_false');
// Block Patterns
add_action('after_setup_theme', function () {
remove_theme_support('core-block-patterns');
});
add_filter('should_load_remote_block_patterns', '__return_false');
/**
* WooCommerce.
*/
// Charge Carbon Fields
function charge_carbon_fields(): void {
// Nécessaire pour que Carbon Fields trouve ses ressources
define('Carbon_Fields\URL', home_url('/vendor/htmlburger/carbon-fields'));
Carbon_Fields::boot();
}
add_action('after_setup_theme', 'charge_carbon_fields');
// Emails
// add_filter("woocommerce_email_styles", "patricks_woocommerce_email_styles");
// function patricks_woocommerce_email_styles($css) {
// $css = "";
// return $css;
// }