ref(boutique) injecte les états dans la page sous forme de JSON
This commit is contained in:
parent
3e8982f11b
commit
4b5cadbc6e
3 changed files with 39 additions and 8 deletions
|
|
@ -10,12 +10,18 @@ namespace HaikuAtelier;
|
||||||
|
|
||||||
use HaikuAtelier\Data\Product;
|
use HaikuAtelier\Data\Product;
|
||||||
use HaikuAtelier\WP\Resource;
|
use HaikuAtelier\WP\Resource;
|
||||||
|
use Roots\WPConfig\Config;
|
||||||
use Timber\Timber;
|
use Timber\Timber;
|
||||||
use WC_Product;
|
use WC_Product;
|
||||||
|
|
||||||
use function add_action;
|
use function add_action;
|
||||||
use function array_map;
|
use function array_map;
|
||||||
|
use function assert;
|
||||||
|
use function base64_encode;
|
||||||
|
use function is_string;
|
||||||
use function wc_get_products;
|
use function wc_get_products;
|
||||||
|
use function wp_create_nonce;
|
||||||
|
use function wp_json_encode;
|
||||||
|
|
||||||
$context = Timber::context();
|
$context = Timber::context();
|
||||||
$templates = ['boutique.twig'];
|
$templates = ['boutique.twig'];
|
||||||
|
|
@ -26,6 +32,17 @@ $wc_products = wc_get_products(['limit' => 12, 'order' => 'DESC', 'orderby' => '
|
||||||
$products = array_map(callback: Product::from_wc_product(...), array: $wc_products);
|
$products = array_map(callback: Product::from_wc_product(...), array: $wc_products);
|
||||||
$context['products'] = $products;
|
$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'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|> wp_json_encode(...);
|
||||||
|
assert(is_string($page_states));
|
||||||
|
$context['page_states'] = $page_states;
|
||||||
|
|
||||||
add_action('wp_enqueue_scripts', function (): void {
|
add_action('wp_enqueue_scripts', function (): void {
|
||||||
Resource::enqueue_style_file(
|
Resource::enqueue_style_file(
|
||||||
handle: 'haiku-atelier-2024-styles-page-boutique',
|
handle: 'haiku-atelier-2024-styles-page-boutique',
|
||||||
|
|
|
||||||
|
|
@ -11,15 +11,20 @@ namespace HaikuAtelier;
|
||||||
use HaikuAtelier\Data\Product;
|
use HaikuAtelier\Data\Product;
|
||||||
use HaikuAtelier\WP\Resource;
|
use HaikuAtelier\WP\Resource;
|
||||||
use Illuminate\Support\Arr;
|
use Illuminate\Support\Arr;
|
||||||
|
use Roots\WPConfig\Config;
|
||||||
use Timber\Timber;
|
use Timber\Timber;
|
||||||
use WC_Product;
|
use WC_Product;
|
||||||
use WP_Term;
|
use WP_Term;
|
||||||
|
|
||||||
use function add_action;
|
use function add_action;
|
||||||
use function assert;
|
use function assert;
|
||||||
|
use function base64_encode;
|
||||||
use function get_queried_object;
|
use function get_queried_object;
|
||||||
use function is_array;
|
use function is_array;
|
||||||
|
use function is_string;
|
||||||
use function wc_get_products;
|
use function wc_get_products;
|
||||||
|
use function wp_create_nonce;
|
||||||
|
use function wp_json_encode;
|
||||||
|
|
||||||
$context = Timber::context();
|
$context = Timber::context();
|
||||||
$templates = ['boutique.twig'];
|
$templates = ['boutique.twig'];
|
||||||
|
|
@ -48,6 +53,17 @@ $products = wc_get_products([
|
||||||
$context['products'] = $products;
|
$context['products'] = $products;
|
||||||
$context['category_id'] = $current_term->term_id;
|
$context['category_id'] = $current_term->term_id;
|
||||||
|
|
||||||
|
// 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'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|> wp_json_encode(...);
|
||||||
|
assert(is_string($page_states));
|
||||||
|
$context['page_states'] = $page_states;
|
||||||
|
|
||||||
add_action('wp_enqueue_scripts', function (): void {
|
add_action('wp_enqueue_scripts', function (): void {
|
||||||
Resource::enqueue_style_file(
|
Resource::enqueue_style_file(
|
||||||
handle: 'haiku-atelier-2024-styles-page-boutique',
|
handle: 'haiku-atelier-2024-styles-page-boutique',
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,12 @@
|
||||||
{% block head %}
|
{% block head %}
|
||||||
{{ include('parts/en-tetes-backend.twig') }}
|
{{ include('parts/en-tetes-backend.twig') }}
|
||||||
|
|
||||||
<script id="injection">
|
<!-- markup-fmt-ignore -->
|
||||||
// dprint-ignore-file
|
<script
|
||||||
// Injection d'états pour les Scripts de la page.
|
id="page-states"
|
||||||
|
type="application/json"
|
||||||
const _etats = {
|
>
|
||||||
authString: "{{ auth_string }}",
|
{{ page_states }}
|
||||||
nonce: "{{ nonce_wc }}",
|
|
||||||
};
|
|
||||||
</script>
|
</script>
|
||||||
{% endblock head %}
|
{% endblock head %}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue