Crear Sistema de Alérgenos en Woocommerce

Seguramente alguna vez en una tienda en Woocoomerce de comida, algo compleja, habéis tenido la necesidad de crear un sistema de alérgenos por cada producto y mostrarlos.


// Woocommerce Alérgenos
$campos_input =array(
    'categoria' => 'Categoría',
);
$campos_checkbox =array(
    'cereales' => 'Cereales',
    'huevos' => 'Huevos',
    'lacteos' => 'Lácteos',
    'pescado' => 'Pescado',
    'moluscos' => 'Moluscos',
    'crustaceos' => 'Crustáceos',
    'cacahuetes' => 'Cacahuetes',
    'soja' => 'Soja',
    'frutossecos' => 'Frutos Secos',
    'sesamo' => 'Sésamo',
    'apio' => 'Apio',
    'mostaza' => 'Mostaza',
    'altramuces' => 'Altramuces',
    'sulfitos' => 'Sulfitos',
);
$iconos =array(
    'categoria' => 'https://www.dominio.com/images/icons/categoria.png',
    'cereales' => 'http://www.dominio.com/images/icons/cereales.png',
    'huevos' => 'http://www.dominio.com/images/icons/huevos.png',
    'lacteos' => 'http://www.dominio.com/images/icons/lacteos.png',
    'pescado' => 'http://www.dominio.com/images/icons/pescado.png',
    'moluscos' => 'http://www.dominio.com/images/icons/moluscos.png',
    'crustaceos' => 'http://www.dominio.com/images/icons/crustaceos.png',
    'cacahuetes' => 'http://www.dominio.com/images/icons/cacahuetes.png',
    'soja' => 'http://www.dominio.com/images/icons/soja.png',
    'frutossecos' => 'http://www.dominio.com/images/icons/frutossecos.png',
    'sesamo' => 'http://www.dominio.com/images/icons/sesamo.png',
    'apio' => 'http://www.dominio.com/images/icons/apio.png',
    'mostaza' => 'http://www.dominio.com/images/icons/mostaza.png',
    'altramuces' => 'http://www.dominio.com/images/icons/altramuces.png',
    'sulfitos' => 'http://www.dominio.com/images/icons/sulfitos.png',

);
 
//Añade los campos personalizados en la pestaña Generales del producto
function campos_personalizados_trece() {
    global $campos_input, $campos_checkbox;
     
    foreach( $campos_input as $id => $label ) {
        woocommerce_wp_text_input( array( 
            'id' => $id, 
            'class' => 'wc_input short', 
            'label' => __( $label, 'woocommerce' )
        ) );
    }
 
    foreach( $campos_checkbox as $id => $label ) {
        woocommerce_wp_checkbox( array( 
            'id' => $id, 
            'label' => __( $label, 'woocommerce' )
        ) );
    }
}
add_action( 'woocommerce_product_options_pricing', 'campos_personalizados_trece' );
 
//Actualiza los valores introducidos en cada campo
function guarda_campos_personalizados_trece( $product_id ) {
    global $campos_input, $campos_checkbox;
 
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return;
    }
    $campos = array_merge( $campos_input, $campos_checkbox );
     
    foreach( $campos as $campo => $nombre ) {
        if ( isset( $_POST[$campo] ) ) {
            update_post_meta( $product_id, $campo, $_POST[$campo] );
        } else {
            delete_post_meta( $product_id, $campo );
        }
    }
}
add_action( 'save_post', 'guarda_campos_personalizados_trece' );
 
//Muestra los campos en forma de icono y valor en la página de producto
function muestra_campos_personalizados_trece() {
    global $product, $campos_input, $campos_checkbox, $iconos;
    if ( $product->product_type <> 'variable' ) {
        $campos = array_merge( $campos_input, $campos_checkbox );
     
        echo '

' . PHP_EOL; foreach( $campos as $campo => $nombre ) { $valor_campo = get_post_meta( $product->id, $campo, true ); if ( $valor_campo ) { echo '
' . PHP_EOL; echo '' . $nombre . '' . PHP_EOL; if ( $valor_campo != 'yes' ) { echo '' . $valor_campo . '' . PHP_EOL; } echo '
' . PHP_EOL; } } echo '
' . PHP_EOL; } } add_action( 'woocommerce_after_single_product_summary', 'muestra_campos_personalizados_trece', 5 );

En 13Node buscamos freelance con talento que quieran colaborar en nuestros trabajos y proyectos. Si eres diseñador, animador, programador web..., ponte en contacto con nosotros enviando tu portafolio a [email protected]