2014-05-25 4 views
12

Desidero personalizzare le colonne in Woocommerce in admin durante la visualizzazione dell'elenco di prodotti.Come aggiungere/rimuovere colonne nell'elenco di prodotti admin di woocommerce

In particolare, desidero rimuovere alcune colonne e aggiungere diverse colonne di campi personalizzate.

Ho provato molte soluzioni elencati on-line, e posso rimuovere le colonne e aggiungerne di nuovi in ​​questo modo:

add_filter('manage_edit-product_columns', 'show_product_order',15); 
function show_product_order($columns){ 

    //remove column 
    unset($columns['tags']); 

    //add column 
    $columns['offercode'] = __('Offer Code'); 

    return $columns; 
} 

Ma come faccio io popolo della nuova colonna con i dati effettivi del prodotto (in questo caso, un costume campo chiamato "offercode")?

+0

Grazie mi hai salvato la volta –

risposta

24

Il filtro manage_edit-{post_type}_columns viene utilizzato solo per aggiungere effettivamente la colonna. Per controllare cosa viene visualizzato nella colonna per ogni post (prodotto), è possibile utilizzare l'azione manage_{post_type}_posts_custom_column. Questa azione viene chiamata per ogni colonna personalizzata per ogni post e passa due argomenti: $column e $postid.

Usando questa azione è abbastanza facile, è possibile trovare un esempio per visualizzare il campo personalizzato "offercode" qui sotto:

add_action('manage_product_posts_custom_column', 'wpso23858236_product_column_offercode', 10, 2); 

function wpso23858236_product_column_offercode($column, $postid) { 
    if ($column == 'offercode') { 
     echo get_post_meta($postid, 'offercode', true); 
    } 
} 

Si potrebbe anche usare un plugin per controllare questo comportamento, come ad esempio Admin Columns.

+1

Grazie mi hai salvato la volta –

+0

@TejasMehta utilizzando le colonne ADMIN plug-in, come entrare valore di quel campo ora ???? – Umair

+0

@Umair Puoi utilizzare la colonna "Campo personalizzato" (e selezionare "offercode" come meta chiave) oppure utilizzare l'addon premium WooCommerce (https://www.admincolumns.com/woocommerce-columns/). – engelen

2

questa visualizzazione tabella è utilizzata da molti plugin e wordpress stesso. Devi controllare il nome della colonna. $ columns ['tags'] è il tag in Wordpress Post View, non in Woocommerce!

Ecco un elenco di alcuni $ colonne utilizzate per Woocommerce:

$columns['cb'] 
$columns['thumb'] 
$columns['name'] 
$columns['sku'] 
$columns['is_in_stock'] 
$columns['price'] 
$columns['product_cat'] 
$columns['product_tag'] 
$columns['featured'] 
$columns['product_type'] 
$columns['date'] 

e che è il filtro corretto per applicare queste rimozioni.

add_filter('manage_edit-product_columns', 'change_columns_filter',10, 1); 
function change_columns_filter($columns) { 
unset($columns['product_tag']); 
unset($columns['sku']); 
unset($columns['featured']); 
unset($columns['product_type']); 
return $columns; 
} 
1

Se inoltre volete ordinare le colonne (come sopra indicato, la colonna sarà solo essere attaccato alla fine), si può fare qualcosa di simile in vostro gancio di "manage_edit-product_columns" (esempio è tratto da una classe ho implementato):

const BACKEND_PRODUCT_GRID_FIELD_SORTORDER = [ 
    'cb', 
    'thumb', 
    'name', 
    'pa_size_text', 
    'sku', 
    'is_in_stock', 
    'price', 
    'product_cat', 
    'product_tag', 
    'featured', 
    'product_type', 
    'date', 
    'stats', 
    'likes' 
]; 

/** 
* Registers new columns for the backend products grid of Woocommerce. 
* Additionally it sorts the fields after 
* self::BACKEND_PRODUCT_GRID_FIELD_SORTORDER. Fields not included in 
* self::BACKEND_PRODUCT_GRID_FIELD_SORTORDER will be attached to the end of 
* the array. 
* 
* @param array $aColumns - the current Woocommerce backend grid columns 
* 
* @return array - the extended backend grid columns array 
*/ 
public function add_columns_to_product_grid($aColumns) { 
    $aColumns['pa_size_text'] = __('Unit size', 'intolife_misc'); 
    #unset($aColumns['thumb']); 
    $aReturn = []; 
    foreach (self::BACKEND_PRODUCT_GRID_FIELD_SORTORDER as $sKey) { 
     if (isset($aColumns[ $sKey ])) { 
      $aReturn[ $sKey ] = $aColumns[ $sKey ]; 
     } 
    } 

    /** 
    * search additional unknown fields and attache them to the end 
    */ 
    foreach ($aColumns as $sKey => $sField) { 
     if (! isset($aReturn[ $sKey ])) { 
      $aReturn[ $sKey ] = $sField; 
     } 
    } 

    return $aReturn; 
} 
+0

Riassegnato su https://www.ask-sheldon.com/add-product-attribute-columns-backend-grid/ –