2017-09-03 1 views
-1

Je voudrais ajouter un nouveau Shortcode pour remplacer/ajouter le code de suivi dans Woocommrce, tous les shortcodes woocommrce sont définis par une classe phpAjout d'un shortcode personnalisé à WooCommerce

J'ai ajouté un nouveau nom de shortcode woocommerce_my_order_tracking (peut voir ci-dessous), comment puis-je faire la même chose que je faisais sans courir sur les fichiers modèles Woocommrce.

class WC_Shortcodes { 

/** 
* Init shortcodes. 
*/ 
public static function init() { 
    $shortcodes = array(
     'product'     => __CLASS__ . '::product', 
     'product_page'    => __CLASS__ . '::product_page', 
     'product_category'   => __CLASS__ . '::product_category', 
     'product_categories'   => __CLASS__ . '::product_categories', 
     'add_to_cart'    => __CLASS__ . '::product_add_to_cart', 
     'add_to_cart_url'   => __CLASS__ . '::product_add_to_cart_url', 
     'products'     => __CLASS__ . '::products', 
     'recent_products'   => __CLASS__ . '::recent_products', 
     'sale_products'    => __CLASS__ . '::sale_products', 
     'best_selling_products'  => __CLASS__ . '::best_selling_products', 
     'top_rated_products'   => __CLASS__ . '::top_rated_products', 
     'featured_products'   => __CLASS__ . '::featured_products', 
     'product_attribute'   => __CLASS__ . '::product_attribute', 
     'related_products'   => __CLASS__ . '::related_products', 
     'shop_messages'    => __CLASS__ . '::shop_messages', 
     'woocommerce_order_tracking' => __CLASS__ . '::order_tracking', 
     'woocommerce_my_order_tracking' => __CLASS__ . '::my_order_tracking', 
     'woocommerce_cart'   => __CLASS__ . '::cart', 
     'woocommerce_checkout'  => __CLASS__ . '::checkout', 
     'woocommerce_my_account'  => __CLASS__ . '::my_account', 
    ); 

Et plus tard dans la classe

public static function order_tracking($atts) { 
    return self::shortcode_wrapper(array('WC_Shortcode_Order_Tracking', 'output'), $atts); 
} 
public static function my_order_tracking($atts) { 
    return self::shortcode_wrapper(array('WC_Shortcode_My_Order_Tracking', 'output'), $atts); 
} 

Comment puis-je enregistrer ce shortcode (comme shortcode WooCommerce avec tous les autres $ attr WooCommerce shortcode get), mais sans courir sur le fichier de modèles dans WooCommerce,

Répondre

1

Vous utilisez add_shortcode() dans votre thème functions.php ou de préférence dans un plug-in spécifique au site.

add_shortcode('woocommerce_my_order_tracking ', 'so_46027030_tracking_shortcode'); 

function so_46027030_tracking_shortcode($atts) { 
    return 'your code here'; 
} 
+0

Avez-vous remarqué que cette OP est ** remplaçant simplement les fichiers de base de WooCommerce ** ... – LoicTheAztec

+1

Oui, mais je pense que la question était « comment puis-je éviter les fichiers de base remplaçant »? – helgatheviking