corvée(fmt) formate
This commit is contained in:
parent
4720c46ff8
commit
fdb6aaa7e9
23 changed files with 139 additions and 156 deletions
|
|
@ -11,21 +11,21 @@
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
use Roots\WPConfig\Config;
|
|
||||||
|
|
||||||
use function Env\env;
|
use function Env\env;
|
||||||
|
|
||||||
|
use Roots\WPConfig\Config;
|
||||||
|
|
||||||
// USE_ENV_ARRAY + CONVERT_* + STRIP_QUOTES
|
// USE_ENV_ARRAY + CONVERT_* + STRIP_QUOTES
|
||||||
Env\Env::$options = 31;
|
Env\Env::$options = 31;
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* Directory containing all of the site's files.
|
* Directory containing all of the site's files.
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
$root_dir = dirname(__DIR__);
|
$root_dir = dirname(__DIR__);
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* Document Root.
|
* Document Root.
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
|
|
@ -59,7 +59,7 @@ if (file_exists($root_dir.'/.env')) {
|
||||||
define('WP_ENV', env('WP_ENV') ?: 'production');
|
define('WP_ENV', env('WP_ENV') ?: 'production');
|
||||||
|
|
||||||
// Infer WP_ENVIRONMENT_TYPE based on WP_ENV
|
// Infer WP_ENVIRONMENT_TYPE based on WP_ENV
|
||||||
if (!env('WP_ENVIRONMENT_TYPE') && in_array(WP_ENV, ['production', 'staging', 'development', 'local'])) {
|
if (!env('WP_ENVIRONMENT_TYPE') && in_array(WP_ENV, ['production', 'staging', 'development', 'local'], true)) {
|
||||||
Config::define('WP_ENVIRONMENT_TYPE', WP_ENV);
|
Config::define('WP_ENVIRONMENT_TYPE', WP_ENV);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -74,7 +74,7 @@ Config::define('WP_CONTENT_URL', Config::get('WP_HOME').Config::get('CONTENT_DIR
|
||||||
|
|
||||||
// DB settings
|
// DB settings
|
||||||
if (env('DB_SSL')) {
|
if (env('DB_SSL')) {
|
||||||
Config::define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL);
|
Config::define('MYSQL_CLIENT_FLAGS', \MYSQLI_CLIENT_SSL);
|
||||||
}
|
}
|
||||||
|
|
||||||
Config::define('DB_NAME', env('DB_NAME'));
|
Config::define('DB_NAME', env('DB_NAME'));
|
||||||
|
|
@ -88,9 +88,9 @@ $table_prefix = env('DB_PREFIX') ?: 'wp_';
|
||||||
if (env('DATABASE_URL')) {
|
if (env('DATABASE_URL')) {
|
||||||
$dsn = (object) parse_url(env('DATABASE_URL'));
|
$dsn = (object) parse_url(env('DATABASE_URL'));
|
||||||
|
|
||||||
Config::define('DB_NAME', substr($dsn->path, 1));
|
Config::define('DB_NAME', mb_substr($dsn->path, 1));
|
||||||
Config::define('DB_USER', $dsn->user);
|
Config::define('DB_USER', $dsn->user);
|
||||||
Config::define('DB_PASSWORD', isset($dsn->pass) ? $dsn->pass : null);
|
Config::define('DB_PASSWORD', $dsn->pass ?? null);
|
||||||
Config::define('DB_HOST', isset($dsn->port) ? "{$dsn->host}:{$dsn->port}" : $dsn->host);
|
Config::define('DB_HOST', isset($dsn->port) ? "{$dsn->host}:{$dsn->port}" : $dsn->host);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,13 @@
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
use Roots\WPConfig\Config;
|
|
||||||
|
|
||||||
use function Env\env;
|
use function Env\env;
|
||||||
|
|
||||||
|
use Roots\WPConfig\Config;
|
||||||
|
|
||||||
Config::define('SAVEQUERIES', true);
|
Config::define('SAVEQUERIES', true);
|
||||||
Config::define('WP_DEBUG', true);
|
Config::define('WP_DEBUG', true);
|
||||||
Config::define('WP_DEBUG_DISPLAY', false);
|
Config::define('WP_DEBUG_DISPLAY', true);
|
||||||
Config::define('WP_DEBUG_LOG', env('WP_DEBUG_LOG') ?? true);
|
Config::define('WP_DEBUG_LOG', env('WP_DEBUG_LOG') ?? true);
|
||||||
Config::define('WP_DISABLE_FATAL_ERROR_HANDLER', true);
|
Config::define('WP_DISABLE_FATAL_ERROR_HANDLER', true);
|
||||||
Config::define('SCRIPT_DEBUG', true);
|
Config::define('SCRIPT_DEBUG', true);
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,10 @@
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
use Roots\WPConfig\Config;
|
|
||||||
|
|
||||||
use function Env\env;
|
use function Env\env;
|
||||||
|
|
||||||
|
use Roots\WPConfig\Config;
|
||||||
|
|
||||||
Config::define('WP_DEBUG', true);
|
Config::define('WP_DEBUG', true);
|
||||||
Config::define('WP_DEBUG_DISPLAY', false);
|
Config::define('WP_DEBUG_DISPLAY', false);
|
||||||
Config::define('WP_DEBUG_LOG', env('WP_DEBUG_LOG') ?? true);
|
Config::define('WP_DEBUG_LOG', env('WP_DEBUG_LOG') ?? true);
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,10 @@
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
use Roots\WPConfig\Config;
|
|
||||||
|
|
||||||
use function Env\env;
|
use function Env\env;
|
||||||
|
|
||||||
|
use Roots\WPConfig\Config;
|
||||||
|
|
||||||
Config::define('DISALLOW_INDEXING', true);
|
Config::define('DISALLOW_INDEXING', true);
|
||||||
Config::define('WOOCOMMERCE_API_CONSUMER_KEY', env('WOOCOMMERCE_API_CONSUMER_KEY'));
|
Config::define('WOOCOMMERCE_API_CONSUMER_KEY', env('WOOCOMMERCE_API_CONSUMER_KEY'));
|
||||||
Config::define('WOOCOMMERCE_API_CONSUMER_SECRET', env('WOOCOMMERCE_API_CONSUMER_SECRET'));
|
Config::define('WOOCOMMERCE_API_CONSUMER_SECRET', env('WOOCOMMERCE_API_CONSUMER_SECRET'));
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
require_once 'web/wp/wp-load.php';
|
require_once 'web/wp/wp-load.php';
|
||||||
|
|
||||||
ini_set('max_execution_time', 3600);
|
ini_set('max_execution_time', 3_600);
|
||||||
set_time_limit(3600);
|
set_time_limit(3_600);
|
||||||
|
|
||||||
$pdo = new PDO('mysql:dbname=haiku_atelier;host=localhost', 'haiku_utilisateur', 'spNFx5EAYwvF7o7XFMjiHpNPYJimDtmKWv');
|
$pdo = new PDO('mysql:dbname=haiku_atelier;host=localhost', 'haiku_utilisateur', 'spNFx5EAYwvF7o7XFMjiHpNPYJimDtmKWv');
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ require_once __DIR__ . '/src/inc/TraitementInformations.php';
|
||||||
$contexte = Timber::context();
|
$contexte = Timber::context();
|
||||||
$modeles = ['boutique.twig'];
|
$modeles = ['boutique.twig'];
|
||||||
|
|
||||||
/** @var array<WC_Product> $informations_produits Les informations brutes des Produits. */
|
/** @var list<WC_Product> $informations_produits Les informations brutes des Produits. */
|
||||||
$informations_produits = wc_get_products([
|
$informations_produits = wc_get_products([
|
||||||
'limit' => 12,
|
'limit' => 12,
|
||||||
'order' => 'DESC',
|
'order' => 'DESC',
|
||||||
|
|
@ -22,9 +22,9 @@ $informations_produits = wc_get_products([
|
||||||
'status' => 'publish',
|
'status' => 'publish',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
/** @var InformationsProduitShop $produits Les informations strictement nécessaires pour la grille des Produits. */
|
/** @var mixed $produits Les informations strictement nécessaires pour la grille des Produits. */
|
||||||
$produits = array_map(
|
$produits = array_map(
|
||||||
callback: 'recupere_informations_produit_shop',
|
callback: recupere_informations_produit_shop(...),
|
||||||
array: $informations_produits,
|
array: $informations_produits,
|
||||||
);
|
);
|
||||||
$contexte['produits'] = $produits;
|
$contexte['produits'] = $produits;
|
||||||
|
|
|
||||||
|
|
@ -71,10 +71,8 @@ new StarterSite();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Personnalisation du thème.
|
* Personnalisation du thème.
|
||||||
*
|
|
||||||
* @param mixed $wp_customize
|
|
||||||
*/
|
*/
|
||||||
function enregistre_personnalisations_theme($wp_customize) {
|
function enregistre_personnalisations_theme(mixed $wp_customize): void {
|
||||||
// Section « Réseaux sociaux »
|
// Section « Réseaux sociaux »
|
||||||
$wp_customize->add_section('liens_reseaux_sociaux', [
|
$wp_customize->add_section('liens_reseaux_sociaux', [
|
||||||
'title' => __('Liens des réseaux sociaux'),
|
'title' => __('Liens des réseaux sociaux'),
|
||||||
|
|
@ -149,15 +147,15 @@ function enregistre_personnalisations_theme($wp_customize) {
|
||||||
add_action('customize_register', 'enregistre_personnalisations_theme');
|
add_action('customize_register', 'enregistre_personnalisations_theme');
|
||||||
|
|
||||||
function retire_tailles_image_par_defaut(mixed $sizes): mixed {
|
function retire_tailles_image_par_defaut(mixed $sizes): mixed {
|
||||||
error_log(print_r($sizes, true));
|
/** @var list<string> */
|
||||||
|
|
||||||
/** @var array<string> */
|
|
||||||
$targets = ['full', 'thumbnail'];
|
$targets = ['full', 'thumbnail'];
|
||||||
|
|
||||||
foreach ($sizes as $size_index => $size) {
|
foreach ($sizes as $size_index => $size) {
|
||||||
if (!in_array($size, $targets, true)) {
|
if (in_array($size, $targets, true)) {
|
||||||
unset($sizes[$size_index]);
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unset($sizes[$size_index]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $sizes;
|
return $sizes;
|
||||||
|
|
@ -171,7 +169,7 @@ add_filter('async_update_translation', '__return_false');
|
||||||
add_filter('auto_update_translation', '__return_false');
|
add_filter('auto_update_translation', '__return_false');
|
||||||
|
|
||||||
// Block Patterns
|
// Block Patterns
|
||||||
add_action('after_setup_theme', function () {
|
add_action('after_setup_theme', static function (): void {
|
||||||
remove_theme_support('core-block-patterns');
|
remove_theme_support('core-block-patterns');
|
||||||
});
|
});
|
||||||
add_filter('should_load_remote_block_patterns', '__return_false');
|
add_filter('should_load_remote_block_patterns', '__return_false');
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,13 @@
|
||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Le modèle de la Page Panier (« Cart »).
|
* Le modèle de la Page Panier (« Cart »).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
use Illuminate\Support\Number;
|
|
||||||
use Timber\Timber;
|
|
||||||
|
|
||||||
use function Crell\fp\pipe;
|
use function Crell\fp\pipe;
|
||||||
|
use Illuminate\Support\Number;
|
||||||
|
|
||||||
|
use Timber\Timber;
|
||||||
|
|
||||||
// Importe la fonction pour récupérer les informations affichées des Produits dans le Panier
|
// Importe la fonction pour récupérer les informations affichées des Produits dans le Panier
|
||||||
require_once __DIR__ . '/src/inc/TraitementInformations.php';
|
require_once __DIR__ . '/src/inc/TraitementInformations.php';
|
||||||
|
|
@ -95,25 +93,25 @@ $panier = [];
|
||||||
/** @var float $sous_total_panier Le sous-total de la Commande dans le Panier. */
|
/** @var float $sous_total_panier Le sous-total de la Commande dans le Panier. */
|
||||||
$sous_total_panier = WC()->cart->get_subtotal();
|
$sous_total_panier = WC()->cart->get_subtotal();
|
||||||
|
|
||||||
/** @var null|string $code_promo Le code promo appliqué au Panier s'il existe. */
|
/** @var string|null $code_promo Le code promo appliqué au Panier s'il existe. */
|
||||||
$code_promo = collect(WC()->cart->get_applied_coupons())->first();
|
$code_promo = collect(WC()->cart->get_applied_coupons())->first();
|
||||||
|
|
||||||
/** @var int $sous_total_reduction Le total du montant de la Réduction appliquée au Panier */
|
/** @var int $sous_total_reduction Le total du montant de la Réduction appliquée au Panier */
|
||||||
$sous_total_reduction = Number::format(WC()->cart->get_totals()['discount_total'], maxPrecision: 2);
|
$sous_total_reduction = Number::format(WC()->cart->get_totals()['discount_total'], maxPrecision: 2);
|
||||||
|
|
||||||
/** @var float $total_panier Le total de la Commande dans le Panier. */
|
/** @var float $total_panier Le total de la Commande dans le Panier. */
|
||||||
$total_panier = Number::format(floatval(WC()->cart->get_totals()['total']), maxPrecision: 2);
|
$total_panier = Number::format((float) WC()->cart->get_totals()['total'], maxPrecision: 2);
|
||||||
|
|
||||||
foreach (WC()->cart->get_cart() as $cle_panier => $article_panier) {
|
foreach (WC()->cart->get_cart() as $cle_panier => $article_panier) {
|
||||||
$panier[$cle_panier] = [
|
$panier[$cle_panier] = [
|
||||||
'attributs' => $article_panier['data']?->get_type() == 'variation'
|
'attributs' => $article_panier['data']?->get_type() === 'variation'
|
||||||
? recupere_et_formate_attributs_produit($article_panier['data']?->get_attributes())
|
? recupere_et_formate_attributs_produit($article_panier['data']?->get_attributes())
|
||||||
: [],
|
: [],
|
||||||
'cle' => $cle_panier,
|
'cle' => $cle_panier,
|
||||||
'id_produit' => $article_panier['product_id'],
|
'id_produit' => $article_panier['product_id'],
|
||||||
'id_variation' => $article_panier['variation_id'],
|
'id_variation' => $article_panier['variation_id'],
|
||||||
'image' => pipe($article_panier['data']?->get_image_id(), fn($id) => genere_balise_img_multiformats(
|
'image' => pipe($article_panier['data']?->get_image_id(), static fn($id): string => genere_balise_img_multiformats(
|
||||||
id: $id,
|
id: (string) $id,
|
||||||
lazy: true,
|
lazy: true,
|
||||||
)),
|
)),
|
||||||
'prix' => $article_panier['data']?->get_price(),
|
'prix' => $article_panier['data']?->get_price(),
|
||||||
|
|
@ -127,15 +125,15 @@ foreach (WC()->cart->get_cart() as $cle_panier => $article_panier) {
|
||||||
$email = WC()->customer->get_billing_email();
|
$email = WC()->customer->get_billing_email();
|
||||||
$adresse_livraison = WC()->customer->get_shipping();
|
$adresse_livraison = WC()->customer->get_shipping();
|
||||||
$adresse_facturation = WC()->customer->get_billing();
|
$adresse_facturation = WC()->customer->get_billing();
|
||||||
$adresse_renseignee = $adresse_livraison['city'] != '';
|
$adresse_renseignee = $adresse_livraison['city'] !== '';
|
||||||
$pays_livraison = collect(WC()->countries->get_countries())->only($pays_acceptes)->toArray();
|
$pays_livraison = collect(WC()->countries->get_countries())->only($pays_acceptes)->toArray();
|
||||||
$total_livraison = Number::format(floatval(WC()->cart->get_totals()['shipping_total']), precision: 0);
|
$total_livraison = Number::format((float) WC()->cart->get_totals()['shipping_total'], precision: 0);
|
||||||
$methodes_livraison = collect(WC()->session->get('shipping_for_package_0')['rates'])
|
$methodes_livraison = collect(WC()->session->get('shipping_for_package_0')['rates'])
|
||||||
->values()
|
->values()
|
||||||
->map(fn(WC_Shipping_Rate $methode) => [
|
->map(static fn(WC_Shipping_Rate $methode): array => [
|
||||||
'id' => $methode->get_method_id(),
|
'id' => $methode->get_method_id(),
|
||||||
'prix' => Number::format(intval($methode->get_cost()), maxPrecision: 2),
|
'prix' => Number::format((int) $methode->get_cost(), maxPrecision: 2),
|
||||||
'selectionnee' => collect(WC()->session->get('chosen_shipping_methods'))->first() == $methode->get_id(),
|
'selectionnee' => collect(WC()->session->get('chosen_shipping_methods'))->first() === $methode->get_id(),
|
||||||
'titre' => $methode->get_label(),
|
'titre' => $methode->get_label(),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
@ -152,14 +150,6 @@ $contexte['pays_livraison'] = $pays_livraison;
|
||||||
$contexte['sous_total_livraison'] = $total_livraison;
|
$contexte['sous_total_livraison'] = $total_livraison;
|
||||||
$contexte['methodes_livraison'] = $methodes_livraison;
|
$contexte['methodes_livraison'] = $methodes_livraison;
|
||||||
|
|
||||||
// echo "<pre>";
|
|
||||||
// print_r($adresse_livraison);
|
|
||||||
// print_r($adresse_facturation);
|
|
||||||
// print_r($adresse_renseignee);
|
|
||||||
// print_r($methodes_livraison);
|
|
||||||
// print_r(WC()->session->get("chosen_shipping_methods"));
|
|
||||||
// echo "</pre>";
|
|
||||||
|
|
||||||
// Charge les scripts et styles de la page
|
// Charge les scripts et styles de la page
|
||||||
function charge_scripts_styles_page_panier(): void {
|
function charge_scripts_styles_page_panier(): void {
|
||||||
wp_enqueue_style(
|
wp_enqueue_style(
|
||||||
|
|
@ -179,6 +169,9 @@ function charge_scripts_styles_page_panier(): void {
|
||||||
|
|
||||||
add_action('wp_enqueue_scripts', 'charge_scripts_styles_page_panier');
|
add_action('wp_enqueue_scripts', 'charge_scripts_styles_page_panier');
|
||||||
|
|
||||||
|
$lal = wp_json_encode($contexte);
|
||||||
|
echo "<script>console.debug({$lal});</script>";
|
||||||
|
|
||||||
// Rendu
|
// Rendu
|
||||||
Timber::render(
|
Timber::render(
|
||||||
filenames: $modeles,
|
filenames: $modeles,
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,12 @@
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
use Ramsey\Uuid\Uuid;
|
|
||||||
use Roots\WPConfig\Config;
|
use Roots\WPConfig\Config;
|
||||||
use Stripe\BillingPortal\Session;
|
use Stripe\BillingPortal\Session;
|
||||||
use Stripe\Coupon;
|
use Stripe\Coupon;
|
||||||
use Stripe\Product;
|
use Stripe\Product;
|
||||||
use Stripe\Stripe;
|
use Stripe\Stripe;
|
||||||
|
use Symfony\Component\Uid\Uuid;
|
||||||
|
|
||||||
header('Content-Type: application/json; charset=utf-8');
|
header('Content-Type: application/json; charset=utf-8');
|
||||||
|
|
||||||
|
|
@ -61,13 +61,13 @@ $panier = WC()->cart;
|
||||||
/** @var string $email_client */
|
/** @var string $email_client */
|
||||||
$email_client = WC()->session->get('customer')['email'];
|
$email_client = WC()->session->get('customer')['email'];
|
||||||
|
|
||||||
/** @var array<Product> $articles */
|
/** @var list<Product> $articles */
|
||||||
$articles = collect($panier->get_cart())
|
$articles = collect($panier->get_cart())
|
||||||
->map(function ($article_panier) {
|
->map(static function ($article_panier) {
|
||||||
$titre_produit = match ('variable' == $article_panier['data']?->get_type()) {
|
$titre_produit = match ('variable' === $article_panier['data']?->get_type()) {
|
||||||
true => $article_panier['data']?->get_title()
|
true => $article_panier['data']?->get_title()
|
||||||
. ' ('
|
. ' ('
|
||||||
. explode(': ', $article_panier['data']?->get_attribute_summary())[1]
|
. explode(': ', (string) $article_panier['data']?->get_attribute_summary())[1]
|
||||||
. ')',
|
. ')',
|
||||||
false => $article_panier['data']?->get_title(),
|
false => $article_panier['data']?->get_title(),
|
||||||
};
|
};
|
||||||
|
|
@ -91,7 +91,6 @@ $articles = collect($panier->get_cart())
|
||||||
/** @var WC_Order $commande */
|
/** @var WC_Order $commande */
|
||||||
$commande = wc_get_order($order_id);
|
$commande = wc_get_order($order_id);
|
||||||
|
|
||||||
/** @var mixed $methode_livraison */
|
|
||||||
$methode_livraison = ['nom' => $commande->get_shipping_method(), 'cout' => $commande->get_shipping_total() * 100];
|
$methode_livraison = ['nom' => $commande->get_shipping_method(), 'cout' => $commande->get_shipping_total() * 100];
|
||||||
|
|
||||||
// Le nom de la méthode de livraison ne peut être une chaîne vide.
|
// Le nom de la méthode de livraison ne peut être une chaîne vide.
|
||||||
|
|
@ -105,19 +104,19 @@ Stripe::setApiKey(Config::get('STRIPE_API_SECRET'));
|
||||||
// Met à jour les Codes promos
|
// Met à jour les Codes promos
|
||||||
$coupons_stripe = collect(Coupon::all()->data);
|
$coupons_stripe = collect(Coupon::all()->data);
|
||||||
$coupons_wc = collect(WC()->cart->get_coupons())
|
$coupons_wc = collect(WC()->cart->get_coupons())
|
||||||
->map(fn(WC_Coupon $coupon) => [
|
->map(static fn(WC_Coupon $coupon): array => [
|
||||||
'duration' => 'forever',
|
'duration' => 'forever',
|
||||||
'id' => $coupon->get_code(),
|
'id' => $coupon->get_code(),
|
||||||
'name' => $coupon->get_code(),
|
'name' => $coupon->get_code(),
|
||||||
'fixed_cart' === $coupon->get_discount_type() ? 'amount_off' : 'percent_off' => $coupon->get_amount(),
|
'fixed_cart' === $coupon->get_discount_type() ? 'amount_off' : 'percent_off' => $coupon->get_amount(),
|
||||||
])
|
])
|
||||||
->each(function (array $item) use ($coupons_stripe) {
|
->each(static function (array $item) use ($coupons_stripe): void {
|
||||||
// Si le code promo n'existe, le créer
|
// Si le code promo n'existe, le créer
|
||||||
if (!$coupons_stripe->contains('name', $item['name'])) {
|
if (!$coupons_stripe->contains('name', $item['name'])) {
|
||||||
Coupon::create($item);
|
Coupon::create($item);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
$reductions_stripe = $coupons_wc->map(fn($coupon) => ['coupon' => $coupon['name']])->values()->toArray();
|
$reductions_stripe = $coupons_wc->map(static fn($coupon): array => ['coupon' => $coupon['name']])->values()->toArray();
|
||||||
|
|
||||||
/** @var Session $session_checkout_stripe */
|
/** @var Session $session_checkout_stripe */
|
||||||
$session_checkout_stripe = \Stripe\Checkout\Session::create([
|
$session_checkout_stripe = \Stripe\Checkout\Session::create([
|
||||||
|
|
@ -134,9 +133,9 @@ $session_checkout_stripe = \Stripe\Checkout\Session::create([
|
||||||
'tax_behavior' => 'inclusive',
|
'tax_behavior' => 'inclusive',
|
||||||
'type' => 'fixed_amount',
|
'type' => 'fixed_amount',
|
||||||
]]],
|
]]],
|
||||||
], ['idempotency_key' => Uuid::uuid4()]);
|
], ['idempotency_key' => Uuid::v4()]);
|
||||||
// echo json_encode($session_checkout_stripe);
|
// echo json_encode($session_checkout_stripe);
|
||||||
header('HTTP/1.1 303 See Other');
|
header('HTTP/1.1 303 See Other');
|
||||||
header('Location: ' . $session_checkout_stripe->url);
|
header('Location: ' . $session_checkout_stripe->url);
|
||||||
|
|
||||||
exit();
|
exit;
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,9 @@
|
||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Modèle de la Page Contact.
|
* Modèle de la Page Contact.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
use Timber\Timber;
|
use Timber\Timber;
|
||||||
|
|
||||||
// Contexte et modèles
|
// Contexte et modèles
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,12 @@
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
use function Crell\fp\pipe;
|
||||||
use Roots\WPConfig\Config;
|
use Roots\WPConfig\Config;
|
||||||
use Stripe\Checkout\Session;
|
use Stripe\Checkout\Session;
|
||||||
use Stripe\StripeClient;
|
use Stripe\StripeClient;
|
||||||
use Timber\Timber;
|
|
||||||
|
|
||||||
use function Crell\fp\pipe;
|
use Timber\Timber;
|
||||||
|
|
||||||
require_once __DIR__ . '/src/inc/TraitementInformations.php';
|
require_once __DIR__ . '/src/inc/TraitementInformations.php';
|
||||||
|
|
||||||
|
|
@ -63,7 +63,7 @@ try {
|
||||||
|
|
||||||
// Récupère les données des Produits
|
// Récupère les données des Produits
|
||||||
/** @var mixed $produits Les Produits de la Commande sous forme de tableau contenant uniquement les données affichées nécessaires pour le Page. */
|
/** @var mixed $produits Les Produits de la Commande sous forme de tableau contenant uniquement les données affichées nécessaires pour le Page. */
|
||||||
$produits = collect($commande->get_items())->map(function (WC_Order_Item $produit_commande) {
|
$produits = collect($commande->get_items())->map(static function (WC_Order_Item $produit_commande) {
|
||||||
/** @var string $id_produit L'ID du Produit. */
|
/** @var string $id_produit L'ID du Produit. */
|
||||||
$id_produit = $produit_commande['product_id'];
|
$id_produit = $produit_commande['product_id'];
|
||||||
|
|
||||||
|
|
@ -72,7 +72,7 @@ try {
|
||||||
|
|
||||||
// Récupère le nom et la valeur de l'attribut du Produit
|
// Récupère le nom et la valeur de l'attribut du Produit
|
||||||
$attribut = $produit->is_type('variable')
|
$attribut = $produit->is_type('variable')
|
||||||
? collect($produit->get_attributes())->mapWithKeys(function ($_atr, $cle) use ($produit_commande) {
|
? collect($produit->get_attributes())->mapWithKeys(static function ($_atr, $cle) use ($produit_commande) {
|
||||||
$nom_attribut = wc_attribute_label($cle, $produit_commande->get_product());
|
$nom_attribut = wc_attribute_label($cle, $produit_commande->get_product());
|
||||||
$valeur_attribut = $produit_commande->get_product()->get_attribute($cle);
|
$valeur_attribut = $produit_commande->get_product()->get_attribute($cle);
|
||||||
|
|
||||||
|
|
@ -83,7 +83,7 @@ try {
|
||||||
return [
|
return [
|
||||||
'attribut' => $attribut,
|
'attribut' => $attribut,
|
||||||
'id_produit' => $id_produit,
|
'id_produit' => $id_produit,
|
||||||
'image' => pipe($produit->get_image_id(), fn($id) => genere_balise_img_multiformats(
|
'image' => pipe($produit->get_image_id(), static fn($id): string => genere_balise_img_multiformats(
|
||||||
id: $id,
|
id: $id,
|
||||||
lazy: true,
|
lazy: true,
|
||||||
)),
|
)),
|
||||||
|
|
@ -114,7 +114,7 @@ try {
|
||||||
filenames: $modeles,
|
filenames: $modeles,
|
||||||
data: $contexte,
|
data: $contexte,
|
||||||
);
|
);
|
||||||
} catch (Error $e) {
|
} catch (Error $error) {
|
||||||
http_response_code(500);
|
http_response_code(500);
|
||||||
echo json_encode(['error' => esc_html($e->getMessage())]);
|
echo json_encode(['error' => esc_html($error->getMessage())]);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,9 @@
|
||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Le modèle de la Page « Terms & Conditions ».
|
* Le modèle de la Page « Terms & Conditions ».
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
use Timber\Timber;
|
use Timber\Timber;
|
||||||
|
|
||||||
// Contexte et modèles
|
// Contexte et modèles
|
||||||
|
|
|
||||||
|
|
@ -4,16 +4,17 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace HaikuAtelier;
|
namespace HaikuAtelier;
|
||||||
|
|
||||||
|
use function Crell\fp\pipe;
|
||||||
|
use function Env\env;
|
||||||
use Roots\WPConfig\Config;
|
use Roots\WPConfig\Config;
|
||||||
|
|
||||||
use Timber\Site;
|
use Timber\Site;
|
||||||
use Timber\URLHelper;
|
use Timber\URLHelper;
|
||||||
|
use function WC;
|
||||||
use function add_action;
|
use function add_action;
|
||||||
use function add_theme_support;
|
use function add_theme_support;
|
||||||
use function array_map;
|
use function array_map;
|
||||||
use function base64_encode;
|
use function base64_encode;
|
||||||
use function Crell\fp\pipe;
|
|
||||||
use function Env\env;
|
|
||||||
use function esc_url;
|
use function esc_url;
|
||||||
use function get_categories;
|
use function get_categories;
|
||||||
use function get_option;
|
use function get_option;
|
||||||
|
|
@ -23,24 +24,24 @@ use function get_privacy_policy_url;
|
||||||
use function get_theme_mod;
|
use function get_theme_mod;
|
||||||
use function get_theme_mods;
|
use function get_theme_mods;
|
||||||
use function preg_match;
|
use function preg_match;
|
||||||
use function WC;
|
|
||||||
use function wp_create_nonce;
|
use function wp_create_nonce;
|
||||||
use function wp_get_attachment_image_src;
|
use function wp_get_attachment_image_src;
|
||||||
use function wpautop;
|
use function wpautop;
|
||||||
|
|
||||||
class StarterSite extends Site {
|
final class StarterSite extends Site {
|
||||||
public function __construct() {
|
public function __construct() {
|
||||||
add_action('after_setup_theme', [$this, 'defini_fonctionnalites_theme']);
|
add_action('after_setup_theme', $this->defini_fonctionnalites_theme(...));
|
||||||
add_action('after_setup_theme', [$this, 'charge_traductions_theme']);
|
add_action('after_setup_theme', [$this, 'charge_traductions_theme']);
|
||||||
|
|
||||||
add_action('timber/context', [$this, 'ajoute_au_contexte_twig']);
|
add_action('timber/context', $this->ajoute_au_contexte_twig(...));
|
||||||
add_action('timber/twig/environment/options', [$this, 'maj_environnement_twig']);
|
add_action('timber/twig/environment/options', $this->maj_environnement_twig(...));
|
||||||
|
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array<int,mixed> $context
|
* @param array<int,mixed> $context
|
||||||
|
*
|
||||||
* @return array<int,mixed>
|
* @return array<int,mixed>
|
||||||
*/
|
*/
|
||||||
public function ajoute_au_contexte_twig(array $context): array {
|
public function ajoute_au_contexte_twig(array $context): array {
|
||||||
|
|
@ -65,13 +66,13 @@ class StarterSite extends Site {
|
||||||
$context['descriptions_produits'] = $descriptions_produits;
|
$context['descriptions_produits'] = $descriptions_produits;
|
||||||
|
|
||||||
// Logo personnalisée
|
// Logo personnalisée
|
||||||
$context['logo'] = pipe(get_theme_mod('custom_logo'), fn($id) => wp_get_attachment_image_src(
|
$context['logo'] = pipe(get_theme_mod('custom_logo'), static fn($id) => wp_get_attachment_image_src(
|
||||||
attachment_id: $id,
|
attachment_id: $id,
|
||||||
size: 'full',
|
size: 'full',
|
||||||
));
|
));
|
||||||
|
|
||||||
// Informations des Pages
|
// Informations des Pages
|
||||||
$recupere_informations_page = function ($slug) {
|
$recupere_informations_page = static function ($slug) {
|
||||||
$page = get_page_by_path($slug);
|
$page = get_page_by_path($slug);
|
||||||
|
|
||||||
return (object) ['nom' => $page->post_title ?? '', 'lien' => get_page_link($page?->ID)];
|
return (object) ['nom' => $page->post_title ?? '', 'lien' => get_page_link($page?->ID)];
|
||||||
|
|
@ -118,18 +119,18 @@ class StarterSite extends Site {
|
||||||
$context['base_categorie_produit'] = get_option('woocommerce_permalinks')['category_base'] ?? '';
|
$context['base_categorie_produit'] = get_option('woocommerce_permalinks')['category_base'] ?? '';
|
||||||
|
|
||||||
// Récupère les Catégories de Produits
|
// Récupère les Catégories de Produits
|
||||||
$cree_entree_menu = fn($categorie) => [
|
$cree_entree_menu = static fn($categorie): array => [
|
||||||
'nom' => $categorie->name,
|
'nom' => $categorie->name,
|
||||||
'slug' => $categorie->slug,
|
'slug' => $categorie->slug,
|
||||||
// Détermine si l'URL courante est celle de la Page d'Archive d'une Catégorie de Produits
|
// Détermine si l'URL courante est celle de la Page d'Archive d'une Catégorie de Produits
|
||||||
'courante' => preg_match(
|
'courante' => preg_match(
|
||||||
pattern: "/(\\b{$categorie->slug}\\b)/",
|
pattern: "/(\\b{$categorie->slug}\\b)/",
|
||||||
subject: pipe(URLHelper::get_current_url(), URLHelper::get_rel_url(...)),
|
subject: (string) pipe(URLHelper::get_current_url(), URLHelper::get_rel_url(...)),
|
||||||
),
|
),
|
||||||
];
|
];
|
||||||
$entrees_menu_categories = pipe(
|
$entrees_menu_categories = pipe(
|
||||||
get_categories(['hide_empty' => false, 'orderby' => 'menu_order', 'taxonomy' => 'product_cat']),
|
get_categories(['hide_empty' => false, 'orderby' => 'menu_order', 'taxonomy' => 'product_cat']),
|
||||||
fn($categories) => array_map(
|
static fn($categories): array => array_map(
|
||||||
callback: $cree_entree_menu,
|
callback: $cree_entree_menu,
|
||||||
array: $categories,
|
array: $categories,
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enregistre et rend disponible des types de contrôles personnalisés.
|
* Enregistre et rend disponible des types de contrôles personnalisés.
|
||||||
*
|
*
|
||||||
|
|
@ -16,16 +17,14 @@ function enregistre_controle_personnalise_tinymce(): void {
|
||||||
*
|
*
|
||||||
* @see https://github.com/maddisondesigns
|
* @see https://github.com/maddisondesigns
|
||||||
*/
|
*/
|
||||||
class Controle_Personnalise_TinyMCE extends WP_Customize_Control {
|
final class ControlesPersonnalises extends WP_Customize_Control {
|
||||||
/**
|
/** The type of control being rendered. */
|
||||||
* The type of control being rendered.
|
|
||||||
*/
|
|
||||||
public $type = 'editeur_tinymce';
|
public $type = 'editeur_tinymce';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enqueue our scripts and styles.
|
* Enqueue our scripts and styles.
|
||||||
*/
|
*/
|
||||||
#[\Override()]
|
#[Override()]
|
||||||
public function enqueue(): void {
|
public function enqueue(): void {
|
||||||
wp_enqueue_script(
|
wp_enqueue_script(
|
||||||
handle: 'controle-personnalise-tinymce',
|
handle: 'controle-personnalise-tinymce',
|
||||||
|
|
@ -37,10 +36,26 @@ function enregistre_controle_personnalise_tinymce(): void {
|
||||||
wp_enqueue_editor();
|
wp_enqueue_editor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Render the control in the customizer.
|
||||||
|
*/
|
||||||
|
#[Override()]
|
||||||
|
public function render_content(): void { ?>
|
||||||
|
<div class="tinymce-control">
|
||||||
|
<span class="customize-control-title"><?php echo esc_html($this->label); ?></span>
|
||||||
|
<?php if (!empty($this->description)) { ?>
|
||||||
|
<span class="customize-control-description"><?php echo esc_html($this->description); ?></span>
|
||||||
|
<?php } ?>
|
||||||
|
<textarea id="<?php echo esc_attr($this->id); ?>" class="customize-control-tinymce-editor" <?php $this->link(); ?>><?php echo
|
||||||
|
esc_html($this->value())
|
||||||
|
; ?></textarea>
|
||||||
|
</div>
|
||||||
|
<?php }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pass our TinyMCE toolbar string to JavaScript.
|
* Pass our TinyMCE toolbar string to JavaScript.
|
||||||
*/
|
*/
|
||||||
#[\Override()]
|
#[Override()]
|
||||||
public function to_json(): void {
|
public function to_json(): void {
|
||||||
parent::to_json();
|
parent::to_json();
|
||||||
|
|
||||||
|
|
@ -56,22 +71,6 @@ function enregistre_controle_personnalise_tinymce(): void {
|
||||||
? true
|
? true
|
||||||
: false;
|
: false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Render the control in the customizer.
|
|
||||||
*/
|
|
||||||
#[\Override()]
|
|
||||||
public function render_content() { ?>
|
|
||||||
<div class="tinymce-control">
|
|
||||||
<span class="customize-control-title"><?php echo esc_html($this->label); ?></span>
|
|
||||||
<?php if (!empty($this->description)) { ?>
|
|
||||||
<span class="customize-control-description"><?php echo esc_html($this->description); ?></span>
|
|
||||||
<?php } ?>
|
|
||||||
<textarea id="<?php echo esc_attr($this->id); ?>" class="customize-control-tinymce-editor" <?php $this->link(); ?>><?php echo
|
|
||||||
esc_html($this->value())
|
|
||||||
; ?></textarea>
|
|
||||||
</div>
|
|
||||||
<?php }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ function desactive_wpautop(): void {
|
||||||
* Désactive divers transformations du contenu par TinyMCE.
|
* Désactive divers transformations du contenu par TinyMCE.
|
||||||
*
|
*
|
||||||
* @param array<string, bool> $configuration un tableau associatif de la configuration TinyMCE
|
* @param array<string, bool> $configuration un tableau associatif de la configuration TinyMCE
|
||||||
|
*
|
||||||
* @return array<string, bool> le même tableau avec des configurations en plus
|
* @return array<string, bool> le même tableau avec des configurations en plus
|
||||||
*/
|
*/
|
||||||
function desactive_transformation_contenu_tinymce(array $configuration): array {
|
function desactive_transformation_contenu_tinymce(array $configuration): array {
|
||||||
|
|
@ -33,6 +34,7 @@ function desactive_transformation_contenu_tinymce(array $configuration): array {
|
||||||
* Autorise les imports en SVG dans la médiathèque.
|
* Autorise les imports en SVG dans la médiathèque.
|
||||||
*
|
*
|
||||||
* @param array<string, string> $file_types un tableau des types de fichiers autorisés dans la médiathèque
|
* @param array<string, string> $file_types un tableau des types de fichiers autorisés dans la médiathèque
|
||||||
|
*
|
||||||
* @return array<string, string> le même tableau avec SVG en plus
|
* @return array<string, string> le même tableau avec SVG en plus
|
||||||
*/
|
*/
|
||||||
function autorise_import_svg_mediatheque(array $file_types): array {
|
function autorise_import_svg_mediatheque(array $file_types): array {
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,7 @@ function retire_script_galerie(): void {
|
||||||
remove_action('wp_head', 'wc_gallery_noscript');
|
remove_action('wp_head', 'wc_gallery_noscript');
|
||||||
}
|
}
|
||||||
|
|
||||||
function retire_merdes_wc() {
|
function retire_merdes_wc(): void {
|
||||||
// remove WC generator tag
|
// remove WC generator tag
|
||||||
remove_filter('get_the_generator_html', 'wc_generator_tag', 10, 2);
|
remove_filter('get_the_generator_html', 'wc_generator_tag', 10, 2);
|
||||||
remove_filter('get_the_generator_xhtml', 'wc_generator_tag', 10, 2);
|
remove_filter('get_the_generator_xhtml', 'wc_generator_tag', 10, 2);
|
||||||
|
|
@ -128,11 +128,11 @@ function retire_merdes_wc() {
|
||||||
* Modifie la réponse REST pour un Produit en y ajoutant des balises <img> pour chaque image d'intérêt.
|
* Modifie la réponse REST pour un Produit en y ajoutant des balises <img> pour chaque image d'intérêt.
|
||||||
*
|
*
|
||||||
* @param WP_REST_Response $response the response object
|
* @param WP_REST_Response $response the response object
|
||||||
* @param WC_Data $product object data
|
|
||||||
*
|
|
||||||
* @return WP_REST_Response
|
|
||||||
*/
|
*/
|
||||||
function genere_balises_img_dans_produit_dans_reponse_rest($response, $_product) {
|
function genere_balises_img_dans_produit_dans_reponse_rest(
|
||||||
|
WP_REST_Response $response,
|
||||||
|
mixed $_product,
|
||||||
|
): WP_REST_Response {
|
||||||
// Vérifie que la Réponse a des données
|
// Vérifie que la Réponse a des données
|
||||||
if (empty($response->data)) {
|
if (empty($response->data)) {
|
||||||
return $response;
|
return $response;
|
||||||
|
|
@ -141,35 +141,35 @@ function genere_balises_img_dans_produit_dans_reponse_rest($response, $_product)
|
||||||
// Génère la balise <img> pour l'image au repos
|
// Génère la balise <img> pour l'image au repos
|
||||||
$response->data['image_repos'] = pipe(
|
$response->data['image_repos'] = pipe(
|
||||||
$response->data['meta_data'],
|
$response->data['meta_data'],
|
||||||
fn($metadata) => array_filter(
|
static fn($metadata): array => array_filter(
|
||||||
array: $metadata,
|
array: $metadata,
|
||||||
callback: fn($entree) => '_photos_colonne_gauche|||0|value' === $entree->key,
|
callback: static fn($entree): bool => '_photos_colonne_gauche|||0|value' === $entree->key,
|
||||||
),
|
),
|
||||||
fn($metadata) => array_map(
|
static fn($metadata): array => array_map(
|
||||||
array: $metadata,
|
array: $metadata,
|
||||||
callback: fn($entree) => genere_balise_img_multiformats(
|
callback: static fn($entree): string => genere_balise_img_multiformats(
|
||||||
id: $entree?->value,
|
id: $entree?->value,
|
||||||
lazy: true,
|
lazy: true,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
fn($image) => array_values(array: $image)[0],
|
static fn($image) => array_values(array: $image)[0],
|
||||||
);
|
);
|
||||||
|
|
||||||
// Génère la balise <img> pour l'image au survol
|
// Génère la balise <img> pour l'image au survol
|
||||||
$response->data['image_survol'] = pipe(
|
$response->data['image_survol'] = pipe(
|
||||||
$response->data['meta_data'],
|
$response->data['meta_data'],
|
||||||
fn($metadata) => array_filter(
|
static fn($metadata): array => array_filter(
|
||||||
array: $metadata,
|
array: $metadata,
|
||||||
callback: fn($entree) => '_photos_colonne_droite|||0|value' === $entree->key,
|
callback: static fn($entree): bool => '_photos_colonne_droite|||0|value' === $entree->key,
|
||||||
),
|
),
|
||||||
fn($metadata) => array_map(
|
static fn($metadata): array => array_map(
|
||||||
array: $metadata,
|
array: $metadata,
|
||||||
callback: fn($entree) => genere_balise_img_multiformats(
|
callback: static fn($entree): string => genere_balise_img_multiformats(
|
||||||
id: $entree?->value,
|
id: $entree?->value,
|
||||||
lazy: true,
|
lazy: true,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
fn($image) => array_values(array: $image)[0],
|
static fn($image) => array_values(array: $image)[0],
|
||||||
);
|
);
|
||||||
|
|
||||||
return $response;
|
return $response;
|
||||||
|
|
@ -179,20 +179,18 @@ add_filter('woocommerce_rest_prepare_product_object', 'genere_balises_img_dans_p
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO.
|
* TODO.
|
||||||
*
|
|
||||||
* @param WP_REST_Response $reponse
|
|
||||||
* @param WC_Data $_produit
|
|
||||||
*
|
|
||||||
* @return WP_REST_Response
|
|
||||||
*/
|
*/
|
||||||
function genere_prix_maximal_produit_variable_dans_reponse_rest($reponse, $_produit) {
|
function genere_prix_maximal_produit_variable_dans_reponse_rest(
|
||||||
|
WP_REST_Response $reponse,
|
||||||
|
WC_Data $_produit,
|
||||||
|
): WP_REST_Response {
|
||||||
// Vérifie que la Réponse a des données
|
// Vérifie que la Réponse a des données
|
||||||
if (empty($reponse->data)) {
|
if (empty($reponse->data)) {
|
||||||
return $reponse;
|
return $reponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Si le Produit n'est pas Variable, assigner le prix du Produit comme prix maximal
|
// Si le Produit n'est pas Variable, assigner le prix du Produit comme prix maximal
|
||||||
if ('variable' != $reponse->data['type']) {
|
if ('variable' !== $reponse->data['type']) {
|
||||||
$reponse->data['prix_maximal'] = $reponse->data['regular_price'];
|
$reponse->data['prix_maximal'] = $reponse->data['regular_price'];
|
||||||
|
|
||||||
return $reponse;
|
return $reponse;
|
||||||
|
|
@ -200,7 +198,7 @@ function genere_prix_maximal_produit_variable_dans_reponse_rest($reponse, $_prod
|
||||||
|
|
||||||
// Assigne le prix de la Variation la plus chère dans la Réponse
|
// Assigne le prix de la Variation la plus chère dans la Réponse
|
||||||
$reponse->data['prix_maximal'] = collect($reponse->data['variations'])->map(wc_get_product(...))->map(
|
$reponse->data['prix_maximal'] = collect($reponse->data['variations'])->map(wc_get_product(...))->map(
|
||||||
fn($p) => $p->get_price(),
|
static fn($p) => $p->get_price(),
|
||||||
)->max();
|
)->max();
|
||||||
|
|
||||||
return $reponse;
|
return $reponse;
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,8 @@ declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Génère la balise `<img>` d'un Média attaché à un Produit selon son ID.
|
* Génère la balise `<img>` d'un Média attaché à un Produit selon son ID.
|
||||||
*
|
|
||||||
* @param int $id_image
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
function genere_balise_img($id_image) {
|
function genere_balise_img(int $id_image): string {
|
||||||
return wp_get_attachment_image(
|
return wp_get_attachment_image(
|
||||||
attachment_id: $id_image,
|
attachment_id: $id_image,
|
||||||
size: 'full',
|
size: 'full',
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ require_once __DIR__ . '/src/inc/TraitementInformations.php';
|
||||||
$contexte = Timber::context();
|
$contexte = Timber::context();
|
||||||
$modeles = ['boutique.twig'];
|
$modeles = ['boutique.twig'];
|
||||||
|
|
||||||
/** @var array<WC_Product> $informations_produits Les informations brutes des Produits. */
|
/** @var list<WC_Product> $informations_produits Les informations brutes des Produits. */
|
||||||
$informations_produits = wc_get_products([
|
$informations_produits = wc_get_products([
|
||||||
'category' => [get_queried_object()?->slug],
|
'category' => [get_queried_object()?->slug],
|
||||||
'limit' => 12,
|
'limit' => 12,
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ use Illuminate\Support\Str;
|
||||||
use Timber\Timber;
|
use Timber\Timber;
|
||||||
|
|
||||||
if (!defined('ABSPATH')) {
|
if (!defined('ABSPATH')) {
|
||||||
exit();
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialise Timber
|
// Initialise Timber
|
||||||
|
|
@ -23,10 +23,10 @@ Timber::$dirname = ['views'];
|
||||||
$contexte = Timber::context();
|
$contexte = Timber::context();
|
||||||
$modeles = ['email-commande-envoyee.twig'];
|
$modeles = ['email-commande-envoyee.twig'];
|
||||||
|
|
||||||
// @var Order $commande La Commande issue du contexte contenu dans la variable $order.
|
/** @var Order $commande La Commande issue du contexte contenu dans la variable $order. */
|
||||||
$commande = $order;
|
$commande = $order;
|
||||||
|
|
||||||
// @var Carbon $date
|
/** @var Carbon $date */
|
||||||
$date = new Carbon($commande->get_date_created());
|
$date = new Carbon($commande->get_date_created());
|
||||||
|
|
||||||
$email = [
|
$email = [
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ use Illuminate\Support\Str;
|
||||||
use Timber\Timber;
|
use Timber\Timber;
|
||||||
|
|
||||||
if (!defined('ABSPATH')) {
|
if (!defined('ABSPATH')) {
|
||||||
exit();
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialise Timber
|
// Initialise Timber
|
||||||
|
|
@ -41,7 +41,7 @@ $email = [
|
||||||
'numero_suivi' => $commande->get_meta('tracking_number'),
|
'numero_suivi' => $commande->get_meta('tracking_number'),
|
||||||
],
|
],
|
||||||
'paiement' => ['methode' => ''],
|
'paiement' => ['methode' => ''],
|
||||||
'produits' => collect($commande->get_items())->map(function (WC_Order_Item_Product $article) {
|
'produits' => collect($commande->get_items())->map(static function (WC_Order_Item_Product $article) {
|
||||||
$produit = $article->get_product();
|
$produit = $article->get_product();
|
||||||
|
|
||||||
if (is_bool($produit) || $produit === null) {
|
if (is_bool($produit) || $produit === null) {
|
||||||
|
|
@ -52,7 +52,7 @@ $email = [
|
||||||
// Récupère l'Attribut d'un Produit variable ou renvoie un tableau vide
|
// Récupère l'Attribut d'un Produit variable ou renvoie un tableau vide
|
||||||
'attribut' => $produit->is_type('variable')
|
'attribut' => $produit->is_type('variable')
|
||||||
? collect($produit->get_attributes())
|
? collect($produit->get_attributes())
|
||||||
->mapWithKeys(fn($_atr, $cle) => [
|
->mapWithKeys(static fn($_atr, $cle): array => [
|
||||||
'nom' => Str::lower(wc_attribute_label($cle, $produit)),
|
'nom' => Str::lower(wc_attribute_label($cle, $produit)),
|
||||||
'valeur' => $produit->get_attribute($cle),
|
'valeur' => $produit->get_attribute($cle),
|
||||||
])
|
])
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ use Illuminate\Support\Str;
|
||||||
use Timber\Timber;
|
use Timber\Timber;
|
||||||
|
|
||||||
if (!defined('ABSPATH')) {
|
if (!defined('ABSPATH')) {
|
||||||
exit();
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialise Timber
|
// Initialise Timber
|
||||||
|
|
@ -37,7 +37,7 @@ $email = [
|
||||||
],
|
],
|
||||||
'commande' => ['date' => $date->toDateString(), 'id' => $commande->get_id()],
|
'commande' => ['date' => $date->toDateString(), 'id' => $commande->get_id()],
|
||||||
'paiement' => ['methode' => ''],
|
'paiement' => ['methode' => ''],
|
||||||
'produits' => collect($commande->get_items())->map(function (WC_Order_Item_Product $article) {
|
'produits' => collect($commande->get_items())->map(static function (WC_Order_Item_Product $article) {
|
||||||
$produit = $article->get_product();
|
$produit = $article->get_product();
|
||||||
|
|
||||||
if (is_bool($produit) || $produit === null) {
|
if (is_bool($produit) || $produit === null) {
|
||||||
|
|
@ -48,7 +48,7 @@ $email = [
|
||||||
// Récupère l'Attribut d'un Produit variable ou renvoie un tableau vide
|
// Récupère l'Attribut d'un Produit variable ou renvoie un tableau vide
|
||||||
'attribut' => $article->is_type('variable')
|
'attribut' => $article->is_type('variable')
|
||||||
? collect($produit->get_attributes())
|
? collect($produit->get_attributes())
|
||||||
->mapWithKeys(fn($_atr, $cle) => [
|
->mapWithKeys(static fn($_atr, $cle): array => [
|
||||||
'nom' => Str::lower(wc_attribute_label($cle, $produit)),
|
'nom' => Str::lower(wc_attribute_label($cle, $produit)),
|
||||||
'valeur' => $produit->get_attribute($cle),
|
'valeur' => $produit->get_attribute($cle),
|
||||||
])
|
])
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WordPress View Bootstrapper.
|
* WordPress View Bootstrapper.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Do not edit this file. Edit the config files found in the config/ dir instead.
|
* Do not edit this file. Edit the config files found in the config/ dir instead.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue