Termék neve és ára külön oszlopban az exportban
Kódrészlet, amellyel a választós termékmezők, opciók, szállítási és választógombos mezők exportjában külön oszlopba kerül a név, az érték és az ár.
Az egyetlen termékmezőknél az exportban alapból külön oszlop van a termék nevének és árának. A választási lehetőségeket kínáló termékmezőknél (legördülő vagy választógombos mezőtípus) viszont ezek az oszlopok nem érhetők el.
Az alábbi kód az oldaladra téve új lehetőségeket ad az Importálás/exportálás oldal Bejegyzések exportálása részéhez: Termék (Név), Termék (Érték) és Termék (Ár). Az új oszlopok minden választós termékmezőnél elérhetők, az Opció és a Szállítás mezőknél is. A Választógomb mezőknél a név- és értékoszlopot adja hozzá.
Ha az exportban a fejléceket testre szeretnéd szabni, a kód a mezőknél beállított admin-címkét is figyelembe veszi.
A kódot a téma functions.php fájljába, egyedi funkciók bővítményébe vagy kódrészlet-kezelőbe teheted.
// Névre, értékre és árra bontott export oszlopok az egyválasztásos mezőkhözadd_filter( 'gform_export_fields', function( $form ) {
foreach ( $form['fields'] as $key => $field ) {
$is_product_like_field = ( $field->type == 'product' || $field->type == 'option' || $field->type == 'shipping' ) ? true : false;
if ( ( $is_product_like_field || $field->type == 'radio' ) && is_array( $field->choices ) ) {
// unset( $form['fields'][ $key ] ); // vedd ki a kommentből, ha az eredeti mezőt el akarod távolítani az exportlistából
// a kiegészítő oszlopok hozzáadása array_push( $form['fields'], array( 'id' => $field->id.'_text', 'label' => $field->label.' (Név)' ) ); array_push( $form['fields'], array( 'id' => $field->id.'_value', 'label' => $field->label.' (Érték)' ) ); if ( $is_product_like_field ) { array_push( $form['fields'], array( 'id' => $field->id.'_price', 'label' => $field->label.' (Ár)' ) ); }
// a hozzáadott oszlopok fejlécei add_filter( "gform_entries_field_header_pre_export_{$form['id']}_{$field->id}_text", function( $header, $form, $export_field ) { return $header.' (Név)'; }, 10, 3 ); add_filter( "gform_entries_field_header_pre_export_{$form['id']}_{$field->id}_value", function( $header, $form, $export_field ) { return $header.' (Érték)'; }, 10, 3 ); if ( $is_product_like_field ) { add_filter( "gform_entries_field_header_pre_export_{$form['id']}_{$field->id}_price", function( $header, $form, $export_field ) { return $header.' (Ár)'; }, 10, 3 ); }
// a hozzáadott oszlopok értékei add_filter( 'gform_export_field_value', function( $value, $form_id, $field_id, $entry ) use ( $field ) {
$product_data = explode( '|', rgar( $entry, $field->id ) ); $product_choice = array_filter( $field->choices, function( $choice ) use ( $product_data ) { return ( $choice['value'] == $product_data[0] ); } ); $product_choice = array_values( $product_choice );
switch ( $field_id ) { case $field->id.'_text': return $product_choice[0]['text']; break; case $field->id.'_value': return $product_data[0]; break; case $field->id.'_price': return $product_data[1]; break; default: return $value; break; }
}, 10, 4 );
}
}
return $form;
} );A kód működése
Szekció neve “A kód működése”- A
gform_export_fieldsszűrő a kiválasztható exportmezők listáját bővíti az új_text,_valueés_pricevégű azonosítókkal. - A
gform_entries_field_header_pre_exportszűrők az új oszlopok fejlécét állítják be. - A
gform_export_field_valueszűrő az új oszlopok tartalmát számolja ki: a mező mentett értékét a|jel mentén szétválasztja, a név a megfelelő választási lehetőség szövege, az érték az első rész, az ár a második. - A kommentbe tett
unsetsor kivételével az eredeti mező is megmarad az exportlistában.
Készült: