# 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.

```php
// Névre, értékre és árra bontott export oszlopok az egyválasztásos mezőkhöz
add_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

- A `gform_export_fields` szűrő a kiválasztható exportmezők listáját bővíti az új `_text`, `_value` és `_price` végű azonosítókkal.
- A `gform_entries_field_header_pre_export` szűrők az új oszlopok fejlécét állítják be.
- A `gform_export_field_value` szű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 `unset` sor kivételével az eredeti mező is megmarad az exportlistában.
