Chcę pokazać dodatkową kolumnę w backendie WooCommerce (w Przeglądzie Zamówień). Kolumna powinna zawierać niestandardowe pole, które zdefiniowałem (data dostawy).WooCommerce Pokaż niestandardową kolumnę
Jak to zrobić?
Chcę pokazać dodatkową kolumnę w backendie WooCommerce (w Przeglądzie Zamówień). Kolumna powinna zawierać niestandardowe pole, które zdefiniowałem (data dostawy).WooCommerce Pokaż niestandardową kolumnę
Jak to zrobić?
Natknąłem się teraz na Woocommerce. Dodano niestandardowe pole Osobisty numer rejestracyjny - a teraz chciałem, aby był wyświetlany na stronie Przegląd zamówienia.
Udało mi się dodać kolumnę - ale nadal nie udało się uzyskać wartości niestandardowego pola dla każdego zamówienia.
Oto co zrobiłem:
// Removed Existing Order Page collumns
remove_filter('manage_edit-shop_order_columns', 'woocommerce_edit_order_columns');
// Added My own filter to Show the PRN - Personal Registration field
add_filter('manage_edit-shop_order_columns', 'omak_edit_order_columns');
// The omak_edit_order_columns definition
/*** Taken from admin/post_types/shop_order.php ***/
function omak_edit_order_columns($columns){
global $woocommerce;
$columns = array();
$columns["cb"] = "<input type=\"checkbox\" />";
$columns["order_status"] = __('Status', 'woocommerce');
$columns["order_title"] = __('Order', 'woocommerce');
$columns["order_prn"] = __('PRN', 'woocommerce'); // This is the line which added the column after the Title Column
$columns["billing_address"] = __('Billing', 'woocommerce');
$columns["shipping_address"] = __('Shipping', 'woocommerce');
$columns["total_cost"] = __('Order Total', 'woocommerce');
$columns["order_comments"] = '<img alt="' . esc_attr__('Order Notes', 'woocommerce') . '" src="' . $woocommerce->plugin_url() . '/assets/images/order-notes_head.png" class="tips" data-tip="' . __('Order Notes', 'woocommerce') . '" width="12" height="12" />';
$columns["note"] = '<img src="' . $woocommerce->plugin_url() . '/assets/images/note_head.png" alt="' . __('Customer Notes', 'woocommerce') . '" class="tips" data-tip="' . __('Customer Notes', 'woocommerce') . '" width="12" height="12" />';
$columns["order_date"] = __('Date', 'woocommerce');
$columns["order_actions"] = __('Actions', 'woocommerce');
return $columns;
}
Daj mi znać, jeśli to pomaga ...
ja zostaję do czynienia z jak dostać się do jego wartości dla każdego zamówienia.
Zgodnie z komentarzem: definicja funkcji istnieje w shop_order.php w wtyczce WooCommerce. Daj mi znać, jeśli ktokolwiek to rozwiąże ... lub wie, jak to zrobić.
Dzięki (przepraszam, był zajęty czymś tak nie mógł odczytać z powrotem do sprawdzania błędów)
W przypadku ktoś jeszcze potrzebuje - instrukcje jak dodać nowe kolumny w woocommerce listy zamówień. Nie ma potrzeby wyłączania domyślnych kolumn, po prostu dodaj to w swoim functions.php, a kod będzie ważny dla aktualizacji.
add_filter('manage_edit-shop_order_columns', 'MY_COLUMNS_FUNCTION');
function MY_COLUMNS_FUNCTION($columns){
$new_columns = (is_array($columns)) ? $columns : array();
unset($new_columns['order_actions']);
//edit this for you column(s)
//all of your columns will be added before the actions column
$new_columns['MY_COLUMN_ID_1'] = 'MY_COLUMN_1_TITLE';
$new_columns['MY_COLUMN_ID_2'] = 'MY_COLUMN_2_TITLE';
//stop editing
$new_columns['order_actions'] = $columns['order_actions'];
return $new_columns;
}
add_action('manage_shop_order_posts_custom_column', 'MY_COLUMNS_VALUES_FUNCTION', 2);
function MY_COLUMNS_VALUES_FUNCTION($column){
global $post;
$data = get_post_meta($post->ID);
//start editing, I was saving my fields for the orders as custom post meta
//if you did the same, follow this code
if ($column == 'MY_COLUMN_ID_1') {
echo (isset($data['MY_COLUMN_1_POST_META_ID']) ? $data['MY_COLUMN_1_POST_META_ID'] : '');
}
if ($column == 'MY_COLUMN_ID_2') {
echo (isset($data['MY_COLUMN_2_POST_META_ID']) ? $data['MY_COLUMN_2_POST_META_ID'] : '');
}
//stop editing
}
add_filter("manage_edit-shop_order_sortable_columns", 'MY_COLUMNS_SORT_FUNCTION');
function MY_COLUMNS_SORT_FUNCTION($columns) {
$custom = array(
//start editing
'MY_COLUMN_ID_1' => 'MY_COLUMN_1_POST_META_ID',
'MY_COLUMN_ID_2' => 'MY_COLUMN_2_POST_META_ID'
//stop editing
);
return wp_parse_args($custom, $columns);
}
Następujące prace dla WooCommerce 2.6.2. Należy spojrzeć na dwa nowe haki:
add_filter('woocommerce_admin_order_item_headers', 'so13683162_headers');
function so13683162_headers($order) {
echo "<th>FIELD1</th>";
}
add_filter('woocommerce_admin_order_item_values', 'so13683162_values');
function so13683162_values($product) {
if (isset($product -> id)) {
$attrs = get_post_meta($product -> id, "_product_attributes", true);
echo "<td>" . $attrs["FIELD1"]["value"] . "</td>";
}
}
To nie dodaje kolumny do listy, tylko dodaje kolumnę do widoku szczegółów. – kevinc
Aby dodać nowy kupon kolumnowy do tabeli zamówień woo-commerce i uzyskać cały kod kuponu zgodnie z zamówieniem. musisz skopiować i wkleić w sobie function.php.
add_filter('manage_edit-shop_order_columns', 'custom_shop_order_column', 11);
function custom_shop_order_column($columns) {
//add columns
$columns['my-column1'] = __('Coupons Code', 'theme_slug');
return $columns;
}
// adding the data for each orders by column (example)
add_action('manage_shop_order_posts_custom_column', 'cbsp_credit_details', 10, 2);
function cbsp_credit_details($column) {
global $post, $woocommerce, $the_order;
$order_id = $the_order->id;
switch ($column) {
case 'my-column1' :
// $myVarOne = wc_get_order_item_meta($order_id, 15, true);
if ($the_order->get_used_coupons()) {
$coupons_count = count($the_order->get_used_coupons());
foreach ($the_order->get_used_coupons() as $coupon) {
echo $coupon;
$i++;
}
echo '</p>';
}
// echo $myVarOne;
break;
}
}
Spróbuj tego, dostaniesz rozwiązanie wystarczy napisać poniżej kod na swojej function.php pliku.
add_filter('manage_edit-shop_order_columns','your_function_name',10);
function your_function_name($columns){
$columns['delivery_date'] = __('Delivery date','textdomain');
return $columns;
}
add_action('manage_shop_order_posts_custom_column','your_other_function_name',20);
function your_other_function_name($column)
{
swith($column)
{
case 'delivery_date': // your custom code here and do what you want.
}
}
Bardzo dobrze wyjaśniona odpowiedź. Brakujący średnik na pierwszym przykładzie –
Czy wiesz, czy to nadal działa w WooCommerce 2.1.3? Próbowałem, ale to nie działa; nie dodano niestandardowych kolumn. Wygląda * tak, jakby filtr był stosowany; jeśli umieściłem 'die()' w funkcji nie utworzono kolumn, poza tym nie mogę uzyskać żadnej zmiany. – Dre
@Dre Pierwszy filtr wymaga nieco wyższego priorytetu niż domyślny 10. Kiedy uruchomiłem go z wtyczki, 11 działało: 'add_filter ('manage_edit-shop_order_columns', 'MY_COLUMNS_FUNCTION', 11);' – orionrush