Cómo agregar campos en la sección de exportar productos en WooCommerce

WooCommerce permite exportar productos desde el administrador de WordPress, pero en su configuración predeterminada no ofrece la posibilidad de agregar filtros personalizados. En este artículo, te mostraré cómo agregar campos personalizados en la sección de exportación de productos y cómo utilizarlos como filtros para refinar la exportación.

Como ejemplo, agregaremos un campo de selección múltiple para filtrar por etiquetas de productos (

product_tags
product_tags).

 

Agregar un campo de selección múltiple en la sección de exportación

Para agregar un campo personalizado en la sección de exportación, debemos usar el hook

woocommerce_product_export_row
woocommerce_product_export_row, que nos permite insertar elementos HTML dentro del formulario de exportación.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
add_action( 'woocommerce_product_export_row', function() {
$tags = get_terms( array(
'taxonomy' => 'product_tag',
'hide_empty' => false
) );
if ( empty( $tags ) || is_wp_error( $tags ) ) {
return;
}
echo '<tr>';
echo '<th><label for="product_tags">' . __( 'Product Tags', 'woocommerce' ) . '</label></th>';
echo '<td>';
echo '<select id="product_tags" name="product_tags[]" class="wc-enhanced-select" multiple style="width: 100%; max-width: 300px;">';
foreach ( $tags as $tag ) {
echo '<option value="' . esc_attr( $tag->slug ) . '">' . esc_html( $tag->name ) . '</option>';
}
echo '</select>';
echo '</td>';
echo '</tr>';
} );
<?php add_action( 'woocommerce_product_export_row', function() { $tags = get_terms( array( 'taxonomy' => 'product_tag', 'hide_empty' => false ) ); if ( empty( $tags ) || is_wp_error( $tags ) ) { return; } echo '<tr>'; echo '<th><label for="product_tags">' . __( 'Product Tags', 'woocommerce' ) . '</label></th>'; echo '<td>'; echo '<select id="product_tags" name="product_tags[]" class="wc-enhanced-select" multiple style="width: 100%; max-width: 300px;">'; foreach ( $tags as $tag ) { echo '<option value="' . esc_attr( $tag->slug ) . '">' . esc_html( $tag->name ) . '</option>'; } echo '</select>'; echo '</td>'; echo '</tr>'; } );
<?php
add_action( 'woocommerce_product_export_row', function() {
    $tags = get_terms( array(
        'taxonomy'   => 'product_tag',
        'hide_empty' => false
    ) );
    
    if ( empty( $tags ) || is_wp_error( $tags ) ) {
        return;
    }
    
    echo '<tr>';
    echo '<th><label for="product_tags">' . __( 'Product Tags', 'woocommerce' ) . '</label></th>';
    echo '<td>';
    echo '<select id="product_tags" name="product_tags[]" class="wc-enhanced-select" multiple style="width: 100%; max-width: 300px;">';
    
    foreach ( $tags as $tag ) {
        echo '<option value="' . esc_attr( $tag->slug ) . '">' . esc_html( $tag->name ) . '</option>';
    }
    
    echo '</select>';
    echo '</td>';
    echo '</tr>';
} );

Esto añadirá un campo de selección múltiple donde los usuarios podrán elegir etiquetas de productos antes de exportarlos.

 

Aplicar un filtro basado en el campo agregado

Una vez agregado el campo, debemos usar el hook

woocommerce_product_export_product_query_args
woocommerce_product_export_product_query_argspara modificar la consulta de exportación y filtrar los productos según la selección del usuario.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
add_filter( 'woocommerce_product_export_product_query_args', function( $args ) {
if ( isset( $_POST['form'] ) ) {
parse_str( $_POST['form'], $form_data );
if ( isset( $form_data['product_tags'] ) && ! empty( $form_data['product_tags'] ) ) {
$args['tax_query'][] = array(
'taxonomy' => 'product_tag',
'field' => 'slug',
'terms' => (array) $form_data['product_tags']
);
}
}
return $args;
} );
<?php add_filter( 'woocommerce_product_export_product_query_args', function( $args ) { if ( isset( $_POST['form'] ) ) { parse_str( $_POST['form'], $form_data ); if ( isset( $form_data['product_tags'] ) && ! empty( $form_data['product_tags'] ) ) { $args['tax_query'][] = array( 'taxonomy' => 'product_tag', 'field' => 'slug', 'terms' => (array) $form_data['product_tags'] ); } } return $args; } );
<?php
add_filter( 'woocommerce_product_export_product_query_args', function( $args ) {
    if ( isset( $_POST['form'] ) ) {
        parse_str( $_POST['form'], $form_data );
        
        if ( isset( $form_data['product_tags'] ) && ! empty( $form_data['product_tags'] ) ) {
            $args['tax_query'][] = array(
                'taxonomy' => 'product_tag',
                'field'    => 'slug',
                'terms'    => (array) $form_data['product_tags']
            );
        }
    }
    return $args;
} );

Esto asegura que solo se exporten los productos que tienen las etiquetas seleccionadas en el filtro.

 

Con estos fragmentos de código, puedes agregar campos personalizados en la sección de exportación de WooCommerce y utilizarlos para filtrar los productos antes de exportarlos. En este ejemplo, hemos agregado un filtro basado en etiquetas de productos, pero puedes aplicar la misma metodología para otros campos personalizados según tus necesidades.

0 0 votes
Article Rating
Subscribe
Notify of
guest


0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Back to Top
0
Would love your thoughts, please comment.x
()
x