Estoy tratando de acceder a stock_quantity, ID y SKU para productos de woocommerce en una matriz php.
Necesito obtener el SKU para compararlo con un valor en mi código JavaScript para poder mostrar la cantidad de existencias para el producto seleccionado y actualizar un enlace para agregar al carrito con la ID del producto seleccionado.
Obtengo los productos creando una consulta que devuelve cualquier producto con un SKU que contenga la variable $tag. Lo estoy pasando así:
// Get any products with SKU that includes tag $query = new WC_Product_Query(); $query->set( 'sku', $tag ); $products = $query->get_products();Idealmente, me gustaría convertir esta matriz php en una matriz javacript con todas las matrices/objetos anidados intactos. Este fragmento registrará correctamente la matriz en la consola y puedo ver que la matriz, de hecho, contiene los productos a los que necesito acceder.
echo "<script>console.log(".json_encode(var_export($products, true)).");</script>";Si no es posible simplemente convertir la matriz y todo el contenido anidado en una matriz de javascript, me pregunto si tal vez haya una manera de recorrer recursivamente la matriz de php y enviar el contenido a una matriz de javascript.
¡Cualquier ayuda sería muy apreciada! ¡Esta es mi primera publicación de desbordamiento de pila!
Si desea enviar datos de php a javascript, puede usar tal cosa.
En php:
$vars = [ 'data1' => ["first" => 1, "second" => 2], ... some many proprieties ]; wp_localize_script('name_of_script', 'name_of_variables', $vars);En javascript:
console.log(name_of_variables.data1)Tal vez el IDE le diga que no puede encontrar la variable, porque la variable está en la página de PHP. Luego en javascript puedes usarlo como quieras
Espero que te sea de utilidad Saludos cordiales
Desafortunadamente, nadie pudo proporcionar un fragmento, pero pude encontrar una solución, así que aquí está:
// Get any products with SKU that includes tag $query = new WC_Product_Query(); $query->set( 'sku', $tag ); $products = $query->get_products(); // Initialize an empty array $products_arr = array(); // Loop through products foreach($products as $product){ // Create an empty object for each product $prod = new stdClass(); // Set get product data and add to object $prod->stock_quantity = $product->get_stock_quantity(); $prod->sku = $product->get_sku(); $prod->id = $product->get_id(); $prod->price = $product->get_price(); // Push product object with data to array array_push($products_arr, $prod); } // Create JS var and set it to the array of objects echo "<script>var ticketsBySku = ".json_encode($products_arr).";</script>";Ahora tengo una variable js a la que puedo acceder en cualquier parte de mi código que contiene el contenido de mi consulta de productos de woocommerce (matriz de php)
¡Espero que eso ayude a alguien!