71 lines
1.8 KiB
PHP
Executable file
71 lines
1.8 KiB
PHP
Executable file
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/**
|
|
* Le modèle de la Page d'Archive d'une Catégorie de Produits.
|
|
*/
|
|
|
|
namespace HaikuAtelier;
|
|
|
|
use Exception;
|
|
use HaikuAtelier\Data\Product;
|
|
use HaikuAtelier\WP\Resource;
|
|
use Illuminate\Support\Arr;
|
|
use Timber\Timber;
|
|
use WC_Product;
|
|
use WP_Term;
|
|
|
|
require_once __DIR__ . '/src/inc/TraitementInformations.php';
|
|
|
|
$context = Timber::context();
|
|
$templates = ['boutique.twig'];
|
|
|
|
/** @var WP_Term */
|
|
$current_term = get_queried_object();
|
|
$category_slug = $current_term->slug;
|
|
|
|
/** @var list<WC_Product> $raw_products Les informations brutes des Produits. */
|
|
$raw_products = wc_get_products([
|
|
'category' => [$category_slug],
|
|
'limit' => 12,
|
|
'order' => 'DESC',
|
|
'orderby' => 'date',
|
|
'status' => 'publish',
|
|
]);
|
|
|
|
/** @var list<Product> */
|
|
$products = Arr::map($raw_products, Product::new(...));
|
|
$context['products'] = $products;
|
|
|
|
/** @var string */
|
|
$products_category_id = array_shift($raw_products)?->get_category_ids()[0] ?? '';
|
|
$context['products_category_id'] = $products_category_id;
|
|
|
|
/**
|
|
* Charge les scripts et styles de la page.
|
|
*
|
|
* @throws Exception une exception est levée s'il est impossible d'obtenir la date de modification du fichier à charger
|
|
*/
|
|
function load_page_resources(): void {
|
|
Resource::enqueue_style_file(
|
|
handle: 'haiku-atelier-2024-styles-page-boutique',
|
|
path: '/assets/css/pages/page-boutique.css',
|
|
);
|
|
Resource::enqueue_script_module_file(
|
|
id: 'haiku-atelier-2024-scripts-page-boutique',
|
|
path: '/assets/js/scripts-page-boutique.js',
|
|
);
|
|
Resource::enqueue_script_module_file(
|
|
id: 'haiku-atelier-2024-scripts-menu-categories',
|
|
path: '/assets/js/scripts-menu-categories.js',
|
|
);
|
|
}
|
|
|
|
add_action('wp_enqueue_scripts', load_page_resources(...));
|
|
|
|
// Rendu
|
|
Timber::render(
|
|
filenames: $templates,
|
|
data: $context,
|
|
);
|