2017-10-05 10 views
1

En WooCommerce, je suis en train d'ajouter des « estimations d'expédition » à mes méthodes d'expédition (tous sont de type à taux fixe), il ressemble à ceci: Image Ajouter différentes étiquettes personnalisées à WooCommerce méthodes d'expédition

seulement toutes les dates estimées sont différentes ...

Mon problème est que je n'arrive pas à cibler des instances spécifiques. Je ne peux sélectionner la méthode entière (forfaitaire), j'ai vérifié mes méthodes exemple les ID, puisque ceux-ci sont uniques:

screenshot

Mais il ne fonctionne que quand je mets 0 comme un cas dans la méthode de commutation php. 2,3,4,5,7 ne fonctionnent pas.

Voici mon code:

function sv_shipping_method_estimate_label($label, $method) { 
    $label. = '<br /><small>'; 
    switch ($method - > instance_id) { 
     case 0: 
      $label. = 'Est delivery: 2-400 days'; 
      break; 
    } 

    $label. = '</small>'; 
    return $label; 
} 
add_filter('woocommerce_cart_shipping_method_full_label', 'sv_shipping_method_estimate_label', 10, 2); 

Le code résulte évidemment dans tous les mêmes estimations pour toutes mes méthodes d'expédition.

Répondre

0

Voici la bonne façon de faire ce que vous attendez (vous ne devriez avoir besoin de changer les textes pour obtenir vos étiquettes correctes):

add_filter('woocommerce_cart_shipping_method_full_label', 'custom_shipping_method_label', 10, 2); 
function custom_shipping_method_label($label, $method){ 
    $rate_id = $method->id; // The rate ID 
    $method_id = $method->method_id; // The method slug 
    $instance_id = str_replace($method_id.':', '', $rate_id); // The instance ID 

    // Continue only if it is "flat rate" 
    if($method_id != 'flat_rate') return $label; 

    switch ($instance_id) { 
     case '3': 
      $txt = __('Est delivery: 2-5 days'); // <= text to customize 
      break; 
     case '4': 
      $txt = __('Est delivery: 1 day'); // <= text to customize 
      break; 
     case '5': 
      $txt = __('Est delivery: 2-3 days'); // <= text to customize 
      break; 
     // for case '2' and others 'flat rates' (in case of) 
     default: 
      $txt = __('Est delivery: 2-400 days'); 
    } 
    return $label . '<br /><small>' . $txt . '</small>'; 
} 

Code va dans le fichier function.php de votre thème enfant actif (ou thème) ou également dans n'importe quel fichier plugin.

Testé et fonctionne