Quiero agregar un campo personalizado "Descripción del producto" en un conjunto específico de productos de woocommerce en functions.php. Vea el siguiente código:
add_action('woocommerce_before_add_to_cart_button','wdm_add_custom_fields'); function wdm_add_custom_fields( $cart ) { global $product; ob_start(); ?> <div class="wdm-custom-fields"> <label>Product Description</label>: <input type="text" name="wdm_name"> </div> <div class="clear"></div> <?php $content = ob_get_contents(); $targeted_ids = array(29, 27, 28, 72, 84, 95); ob_end_flush(); foreach ( $cart->get_cart() as $item ) { if ( array_intersect($targeted_ids, array($item['product_id'], $item['variation_id']) ) ); } return $content; }No sé qué salió mal con el código, ya que Wordpress dice "Ha habido un error crítico en este sitio web". Aviso. Encendí el informe de errores de WordPress en el archivo wp-config.php pero no mostró ningún error.
define('WP_DEBUG', true); define('WP_DEBUG_DISPLAY', true);Tal vez la instrucción if no esté funcionando. Por favor avise.
He activado el modo de depuración y obtuve un error en el registro de depuración. Tienes que agregar define( 'WP_DEBUG_LOG', true ); al archivo wp-config.php para registrar los errores en un archivo llamado debug.log
En lugar de usar $cart en foreach, usa WC()->cart->get_cart() .
Pero si su requisito es mostrar un campo personalizado en la página de un solo producto para una ID de producto en particular, entonces podría usar lo siguiente.
add_action('woocommerce_before_add_to_cart_button','wdm_add_custom_fields'); function wdm_add_custom_fields() { global $product; $targeted_ids = array(29, 27, 28, 72, 84, 95); if(in_array( $product->get_id(), $targeted_ids ) ){ ?> <div class="wdm-custom-fields"> <label>Product Description</label>: <input type="text" name="wdm_name"> </div> <div class="clear"></div> <?php } } Suponiendo que necesita mostrar un campo personalizado en la página de un solo producto en función de la identificación del producto, se equivocó. Estaba tratando de obtener productos del carrito, lo que significa que el producto debe agregarse al carrito para mostrar el campo personalizado. En su lugar, debe acceder al ID del producto desde la variable global $product .
Además, no necesita devolver datos a un enlace de acción, puede escribir html o simplemente echo de los contenidos almacenados en una variable.