php - personalizar - woocommerce checkout manager conditional
Mostrar el valor del campo personalizado en Woocommerce Cart & Checkout items (1)
Su problema está en la función get_post_meta()
, cuyo último argumento se establece en true
, por lo que obtiene un valor de campo personalizado como una cadena .
Luego está utilizando justo después de la función PHP array_map()
que espera una matriz pero NO un valor de cadena .
Creo que no es necesario utilizar la función
array_map()
como funciónget_post_meta()
con el último argumento establecido entrue
dará como resultado una cadena y no una matriz no seializada.También puede establecer el
$product_id
que está utilizando en la funciónget_post_meta()
como primer argumento, de una manera muy simple.
Entonces tu código debería funcionar, de esta manera:
// Render the custom product field in cart and checkout
add_filter( ''woocommerce_get_item_data'', ''wc_add_cooking_to_cart'', 10, 2 );
function wc_add_cooking_to_cart( $cart_data, $cart_item )
{
$custom_items = array();
if( !empty( $cart_data ) )
$custom_items = $cart_data;
// Get the product ID
$product_id = $cart_item[''product_id''];
if( $custom_field_value = get_post_meta( $product_id, ''minimum-cooking-time'', true ) )
$custom_items[] = array(
''name'' => __( ''Cook Time'', ''woocommerce'' ),
''value'' => $custom_field_value,
''display'' => $custom_field_value,
);
return $custom_items;
}
El código va en el archivo function.php de su tema hijo activo (o tema) o también en cualquier archivo de complemento.
Este código es completamente funcional y probado.
He estado buscando una solución por un tiempo en todo Internet, pero no he podido encontrar ninguna solución adecuada. Estoy usando varios campos personalizados en la página de mi producto, como "Tiempo mínimo de cocción", "Disponibilidad de comida", etc. Por lo tanto, me gusta mostrar el valor de este campo personalizado en la página de mi carrito de compra.
Probé fragmentos en el archivo de función y edité el archivo de carrito de woocommerce también. He intentado varios códigos pero no están extrayendo ningún dato de mis campos personalizados.
Como puede ver en la siguiente captura de pantalla, quiero mostrar el ''Tiempo mínimo de cocción'' en ese área rectangular negra para cada producto:
He usado el siguiente código:
add_filter( ''woocommerce_get_item_data'', ''wc_add_cooking_to_cart'', 10, 2 );
function wc_add_cooking_to_cart( $other_data, $cart_item ) {
$post_data = get_post( $cart_item[''product_id''] );
echo ''<br>'';
$Add = ''Cook Time: '';
echo $test;
$GetCookTime = get_post_meta( $post->ID, ''minimum-cooking-time'', true );
$GetCookTime = array_filter( array_map( function( $a ) {return $a[0];}, $GetCookTime ) );
echo $Add;
print_r( $GetCookTime );
return $other_data;
}
Pero, esto muestra la etiqueta ''Cook Time'' pero no muestra ningún valor al lado.
Cualquier ayuda sería apreciada.
Gracias.