haiku-atelier-2024/web/app/themes/haiku-atelier-2024/single-product.php
2024-11-15 14:04:01 +01:00

72 lines
2.4 KiB
PHP

<?php
/**
* Le modèle de la Page d'un Produit.
*/
declare(strict_types=1);
use Timber\Timber;
use function Crell\fp\pipe;
require_once __DIR__ . "/src/inc/HTML.php";
require_once __DIR__ . "/src/inc/TraitementInformations.php";
// Contexte et modèles
$contexte = Timber::context();
$modeles = ["produit.twig"];
/** @var WC_Product $produit */
$produit = wc_get_product();
$donnees_produit = recupere_informations_produit_page_produit(wc_get_product());
$est_variation = $produit->get_type() == "variable";
$attributs = pipe(
match ($est_variation) {
$produit->get_attribute("pa_side") !== "" => $produit->get_attribute("pa_side"),
$produit->get_attribute("pa_stone") !== "" => $produit->get_attribute("pa_stone"),
$produit->get_attribute("pa_size") !== "" => $produit->get_attribute("pa_size"),
default => "",
},
fn($chaine) => explode(", ", $chaine),
);
$prix_variations = pipe(
// Récupère les Variations
wc_get_product()->get_children(),
// Récupère les informations de chaque Variation
fn($enfants) => array_map(callback: fn($id) => wc_get_product($id), array: $enfants),
// Récupère les Prix
fn($variations) => array_map(callback: fn($variation) => $variation->get_price(), array: $variations),
);
$produits_meme_collection = array_map(
callback: "recupere_informations_produit_page_produit",
array: recupere_produits_meme_collection($donnees_produit["collection"])($donnees_produit["id"]),
);
$contexte["produit"] = $donnees_produit;
$contexte["produits_meme_collection"] = $produits_meme_collection;
$contexte["est_variation"] = $est_variation;
$contexte["attributs"] = $attributs;
$contexte["prix_variations"] = $prix_variations;
/**
* Charge les Scripts nécessaires pour la page Produit.
*/
function charge_scripts_page_produit(): void {
wp_enqueue_script_module(
id: "haiku-atelier-2024-scripts-page-produit",
src: get_template_directory_uri() . "/assets/js/scripts-page-produit.js",
deps: [],
version: filemtime(get_template_directory() . "/assets/js/scripts-page-produit.js"),
);
wp_enqueue_script_module(
id: "haiku-atelier-2024-scripts-menu-categories",
src: get_template_directory_uri() . "/assets/js/scripts-menu-categories.js",
deps: [],
version: filemtime(get_template_directory() . "/assets/js/scripts-menu-categories.js"),
);
}
add_action("wp_enqueue_scripts", "charge_scripts_page_produit");
// Rendu
Timber::render(filenames: $modeles, data: $contexte);