diff --git a/config/environments/development.php b/config/environments/development.php index cfacfcb8..df784947 100755 --- a/config/environments/development.php +++ b/config/environments/development.php @@ -8,6 +8,7 @@ declare(strict_types=1); use Roots\WPConfig\Config; +use function base64_encode; use function Env\env; Config::define('SAVEQUERIES', true); @@ -25,6 +26,10 @@ Config::define('DISALLOW_FILE_MODS', false); // WooCommerce 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_AUTH_STRING', + base64_encode(env('WOOCOMMERCE_API_CONSUMER_KEY') . ':' . env('WOOCOMMERCE_API_CONSUMER_SECRET')), +); // Stripe Config::define('STRIPE_API_SECRET', env('STRIPE_API_SECRET')); diff --git a/config/environments/production.php b/config/environments/production.php index 93b792c3..0047176f 100755 --- a/config/environments/production.php +++ b/config/environments/production.php @@ -8,6 +8,7 @@ declare(strict_types=1); use Roots\WPConfig\Config; +use function base64_encode; use function Env\env; Config::define('WP_DEBUG', true); @@ -20,6 +21,10 @@ Config::define('DISALLOW_FILE_MODS', false); 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_AUTH_STRING', + base64_encode(env('WOOCOMMERCE_API_CONSUMER_KEY') . ':' . env('WOOCOMMERCE_API_CONSUMER_SECRET')), +); // Stripe Config::define('STRIPE_API_SECRET', env('STRIPE_API_SECRET')); diff --git a/config/environments/staging.php b/config/environments/staging.php index 1651c055..0f7ba42b 100755 --- a/config/environments/staging.php +++ b/config/environments/staging.php @@ -8,8 +8,13 @@ declare(strict_types=1); use Roots\WPConfig\Config; +use function base64_encode; use function Env\env; Config::define('DISALLOW_INDEXING', true); 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_AUTH_STRING', + base64_encode(env('WOOCOMMERCE_API_CONSUMER_KEY') . ':' . env('WOOCOMMERCE_API_CONSUMER_SECRET')), +); diff --git a/web/app/themes/haiku-atelier-2024/archive-product.php b/web/app/themes/haiku-atelier-2024/archive-product.php index 2a97be56..a2b49c0f 100755 --- a/web/app/themes/haiku-atelier-2024/archive-product.php +++ b/web/app/themes/haiku-atelier-2024/archive-product.php @@ -17,7 +17,6 @@ use WC_Product; use function add_action; use function array_map; use function assert; -use function base64_encode; use function is_string; use function wc_get_products; use function wp_create_nonce; @@ -33,12 +32,7 @@ $products = array_map(callback: Product::from_wc_product(...), array: $wc_produc $context['products'] = $products; // Injecte les états initiaux des données du Produit sous forme de JSON dans le contexte. -$page_states = [ - 'nonce' => wp_create_nonce('wc_store_api'), - 'authString' => base64_encode( - Config::get('WOOCOMMERCE_API_CONSUMER_KEY') . ':' . Config::get('WOOCOMMERCE_API_CONSUMER_SECRET'), - ), -] +$page_states = ['authString' => Config::get('WOOCOMMERCE_API_AUTH_STRING'), 'nonce' => wp_create_nonce('wc_store_api')] |> wp_json_encode(...); assert(is_string($page_states)); $context['page_states'] = $page_states; diff --git a/web/app/themes/haiku-atelier-2024/src/inc/FonctionnalitesWooCommerce.php b/web/app/themes/haiku-atelier-2024/src/inc/FonctionnalitesWooCommerce.php index 479b02e7..adb6c205 100755 --- a/web/app/themes/haiku-atelier-2024/src/inc/FonctionnalitesWooCommerce.php +++ b/web/app/themes/haiku-atelier-2024/src/inc/FonctionnalitesWooCommerce.php @@ -131,7 +131,8 @@ function retire_merdes_wc(): void { */ function genere_balises_img_dans_produit_dans_reponse_rest( WP_REST_Response $response, - mixed $_product, + WC_Data $_product, + WP_REST_Request $_request, ): WP_REST_Response { // Vérifie que la Réponse a des données if (empty($response->data)) { @@ -169,37 +170,34 @@ function genere_balises_img_dans_produit_dans_reponse_rest( return $response; } -add_filter('woocommerce_rest_prepare_product_object', 'genere_balises_img_dans_produit_dans_reponse_rest', 10, 2); - /** * TODO. */ function genere_prix_maximal_produit_variable_dans_reponse_rest( - WP_REST_Response $reponse, - WC_Data $_produit, + WP_REST_Response $response, + WC_Data $_product, + WP_REST_Request $_request, ): WP_REST_Response { // Vérifie que la Réponse a des données - if (empty($reponse->data)) { - return $reponse; + if (empty($response->data)) { + return $response; } // Si le Produit n'est pas Variable, assigner le prix du Produit comme prix maximal - if ('variable' !== $reponse->data['type']) { - $reponse->data['prix_maximal'] = $reponse->data['regular_price']; + if ('variable' !== $response->data['type']) { + $response->data['prix_maximal'] = $response->data['regular_price']; - return $reponse; + return $response; } // Assigne le prix de la Variation la plus chère dans la Réponse - $reponse->data['prix_maximal'] = collect($reponse->data['variations']) + $response->data['prix_maximal'] = collect($response->data['variations']) ->map(wc_get_product(...)) ->map(static fn($p) => $p->get_price())->max(); - return $reponse; + return $response; } -add_filter('woocommerce_rest_prepare_product_object', 'genere_prix_maximal_produit_variable_dans_reponse_rest', 10, 2); - /** * Retire la propagande commerciale de WooCommerce du menu. */ @@ -216,3 +214,8 @@ add_action('init', 'retire_script_galerie'); add_action('template_redirect', 'retire_merdes_wc'); add_action('wp_enqueue_scripts', 'dequeue_woocommerce_styles_scripts'); add_filter('woocommerce_enqueue_styles', '__return_empty_array'); +add_filter('woocommerce_rest_prepare_product_object', 'genere_balises_img_dans_produit_dans_reponse_rest', 10, 3); +add_filter('woocommerce_rest_prepare_product_object', 'genere_prix_maximal_produit_variable_dans_reponse_rest', 10, 3); + +// DEBUG +// add_filter('woocommerce_store_api_disable_nonce_check', '__return_true');