2017-12-19 4 views
4

Hallo, ich versuche, eine AfterShip-Tracking-Schaltfläche oder einen Link zu meiner Admin-Bestellliste im Backend hinzuzufügen. Ich habe erfolgreich eine neue Spalte erstellt, die die Tracking-Nummer für jede Bestellung anzeigt. Ich möchte jedoch die Tracking-Nummer klickbar machen. Oder erstellen Sie alternativ eine Aktionsschaltfläche, die eine neue Registerkarte öffnet und die Nummer in der Spalte Kontrollnummer verfolgt.Fügen Sie einen benutzerdefinierten URL-Link zur Admin-Bestelllistenseite in WooCommerce hinzu.

Das URL-Format, das ich brauche, ist wie folgt: https://track.aftership.com/LS325245095CN?

Beachten Sie, dass an die Verfolgungsnummer ein Fragezeichen angehängt ist. Ich müsste dies mit der Aktion tun, da das Fragezeichensymbol bei der Eingabe der Tracking-Nummer nicht verwendet wird. Hier

ist der Code, den ich für die Anzeige der Tracking-Nummer Spalte in der Admin-Auftragsliste im Backend bin mit:

//Start Add Tracking Number to Admin Orders List 
//Start Add Header to List 
add_filter('manage_edit-shop_order_columns', 'custom_shop_order_column', 
12, 1); 
function custom_shop_order_column($columns) 
{ 
// Set "Actions" column after the new colum 
$action_column = $columns['order_actions']; // Set the title in a variable 
unset($columns['order_actions']); // remove "Actions" column 


//add the new column "New Tracking Number" 
$columns['order_astracking'] = '<span>'.__('Tracking Number','woocommerce').'</span>'; // title 

// Set back "Actions" column 
$columns['order_actions'] = $action_column; 

return $columns; 
} 

//END Add Header to List 
//START Add Tracking Number Data to List 
add_action('manage_shop_order_posts_custom_column' , 
'custom_order_list_column_content', 10, 2); 
function custom_order_list_column_content($column, $post_id) 
{ 

// HERE get the data from your custom field (set the correct meta key below) 
$astracking = get_post_meta($post_id, '_aftership_tracking_number', true); 
if(empty($astracking)) $astracking = ''; 

switch ($column) 
{ 
    case 'order_astracking' : 
     echo '<span>'.$astracking.'</span>'; // display the data 
     break; 
} 
} 
//END Add Tracking Number Data to List 

//START Make Tracking Number Data Searchable in Admin Orders List 
add_filter('woocommerce_shop_order_search_fields', 
'astracking_search_fields', 10, 1); 
function astracking_search_fields($meta_keys){ 
$meta_keys[] = '_aftership_tracking_number'; 
return $meta_keys; 
} 
//END Make Tracking Number Data Searchable in Admin Orders List 

//END Add Tracking Number to Admin Orders List 

ich diesen Code hier bekam auf Stackoverflow .. super Ressource.

Add custom columns to admin orders list in WooCommerce backend

Jede Hilfe oder Anregungen, die Sie liefern könnten, würden sehr geschätzt. Danke im Voraus!

+0

Wenn Sie WooCommerce Update auf Version 3.3+ Ich habe einen Link zu einer neuen funktionalen Version dieses Codes hinzugefügt – LoicTheAztec

Antwort

2

Neues Update für WC 3.3+:Custom action button in admin orders list on Woocommerce 3.3+

Hier ist der Weg, um eine Aktionstaste in Admin-Bestell-Liste mit einem benutzerdefinierten Link hinzufügen Zusammenhang mit Tracking (öffnen Sie den Link in einem neues Fenster nach Wunsch):

// Add your custom order action button 
add_action('woocommerce_admin_order_actions_end', 'add_custom_order_actions_button', 100, 1); 
function add_custom_order_actions_button($order) { 

    // Get the tracking number 
    $traking_number = get_post_meta($order->get_id(), '_aftership_tracking_number', true); 
    if(empty($traking_number)) return; 

    // Prepare the button data 
    $url = esc_url('https://track.aftership.com/'.$traking_number.'?'); 
    $name = esc_attr(__('Tracking', 'woocommerce')); 
    $action = esc_attr('view tracking'); // keep "view" class for a clean button CSS 

    // Set the action button 
    printf('<a class="button tips %s" href="%s" data-tip="%s" target="_blank">%s</a>', $action, $url, $name, $name); 
} 

// The icon of your action button (CSS) 
add_action('admin_head', 'add_custom_order_actions_button_css'); 
function add_custom_order_actions_button_css() { 
    echo '<style>.view.tracking::after { font-family: woocommerce; content: "\e005" !important; }</style>'; 
} 

-Code geht in functi on.php-Datei Ihres aktiven untergeordneten Themas (oder Themas) oder auch in einer beliebigen Plugin-Datei.

Getestet und funktioniert. Sie werden so etwas wie erhalten:

enter image description here


Jetzt Um Ihre Tracking-Nummer zu machen anklickbar Sie diese Funktion in Ihrem Code ersetzen:

add_action('manage_shop_order_posts_custom_column', 'custom_order_list_column_content', 10, 2); 
function custom_order_list_column_content($column, $post_id) 
{ 

    // HERE get the data from your custom field (set the correct meta key below) 
    $astracking = get_post_meta($post_id, '_aftership_tracking_number', true); 
    if(empty($astracking)) $astracking = ''; 

    switch ($column) 
    { 
     case 'order_astracking' : 
      echo '<span><a href="https://track.aftership.com/'.$astracking.'?" target="_blank">'.$astracking . '</a></span>'; // display the data 
      break; 
    } 
} 
+0

Das ist so toll. Funktioniert super! Ich danke dir sehr. Nur eine kurze Frage. Wenn ich den Button zwingen wollte, die Seite in einem neuen Tab oder Fenster zu öffnen, wie würde ich die URL bearbeiten müssen. Danke noch einmal. – JessDaddy

+0

Das ist einfach zu toll! Klappt wunderbar. Ich denke, kann einfach "Rad-Klick" den Link oder die Schaltfläche für jetzt .. Hoffentlich kann herausfinden, in einem neuen Tab oder Fenster zu öffnen. Aber das ist schon viel einfacher und besser als ich es mir vorgestellt habe .. Danke nochmal. – JessDaddy

+0

@JessDaddy Ich habe gerade den Weg gefunden, den Button Link in einem neuen Fenster zu öffnen ... Ich habe meinen Antwortcode aktualisiert. Danke – LoicTheAztec

Verwandte Themen