• Resolved pippijn

    (@pippijn)


    Hello,

    The shortcode [pr_dhl_tracking_link product_id=”12345″] is not working.
    The shortcode is not in $shortcode_tags which means it’s not registered. But I’m not sure why..

Viewing 15 replies - 1 through 15 (of 15 total)
  • Plugin Author Progressus

    (@shadim)

    Can you confirm which country your webshop is in and where you are trying to use the shortcode?

    Thread Starter pippijn

    (@pippijn)

    Country is Netherlands and i’m trying to add the t&t to emails. Because we use Flycart WooCommerce Email Customizer with Drag and Drop Email Builder, the default action “woocommerce_order_details_after_order_table_items” is not called.

    I wrote a php snippet to test the pr_dhl_tracking_link shortcode, but that doesn’t work either:

    add_action( 'wp_loaded','test_code' );
    function test_code() {
    	echo do_shortcode('[pr_dhl_tracking_link product_id="12345"]');
    }

    I also found this code on the support forum:
    echo PR_DHL()->get_pr_dhl_wc_order()->get_dhl_label_tracking( '12345' );
    But that gives the error “Class ‘PR_DHL_API_Factory’ not found in …/public_html/wp-content/plugins/dhl-for-woocommerce/pr-dhl-woocommerce.php:391”

    • This reply was modified 5 years, 3 months ago by pippijn.
    • This reply was modified 5 years, 3 months ago by pippijn.
    Plugin Author Progressus

    (@shadim)

    Are you using DHL Parcel or Deutsche Post? If you are using Deutsche Post, try using the replacement string instead {pr_dhl_tracking_note} within the email.

    Thread Starter pippijn

    (@pippijn)

    We use DHL Parcel.

    I did try to include the string {pr_dhl_tracking_note}, but it just shows {pr_dhl_tracking_note} in the email.

    Plugin Author Progressus

    (@shadim)

    The short code and email reference do not work for DHL Parcel unfortunately.

    Thread Starter pippijn

    (@pippijn)

    Is there no way of adding t&t to the email? All I need is a function call for the url. I’ll create the note myself.

    Hi pippijn,

    Thanks for using the DHL for WooCommerce plugin. Unfortunately shortcodes are not supported with DHL Parcel. For direct contact, you can e-mail cimparcel@dhl.com

    If you’re familiar with coding, the function you’re looking for is in:

    includes\controller\class-dhlpwc-controller-mail.php
    DHLPWC_Controller_Mail::add_track_trace_to_completed_order_mail()

    It’s currently not tailored to be used outside of the WooCommerce hook, but can be copied and tuned into a custom snippet.

    Greetings,
    Shin Ho
    Plugin Development Team
    DHL Parcel Netherlands

    Thread Starter pippijn

    (@pippijn)

    Thank you! I figured it out

    @pippijn hoe heb je het opgelost? Ik heb hetzelfde probleem met DHL plugin en Woomail Customizer.

    how did you solve it? I have the same problem with DHL plugin

    Thread Starter pippijn

    (@pippijn)

    This is the function I use to get the T&T urls:

    function get_dhl_parcel_urls( $order_id ) {
    	if ( $order_id ){
    		$locale = str_replace('_', '-', get_locale());
    
    		$order = wc_get_order($order_id);
    		if ( ! $order ){
    			return false;
    		}
            $address = $order->get_address('shipping') ?: $order->get_address();
            $postcode = wc_format_postcode($address['postcode'], $address['country']);
    		
    		$labels = get_post_meta($order_id, '_dhlpwc_order_labels', true);
    		if (!is_array( $labels )) {
    			return false;
    		}
    
            $tracking_codes = array();
            foreach($labels as $label) {
                if (array_key_exists('tracker_code', $label) && empty($label['is_return'])) {
                    $tracking_codes[] = $label['tracker_code'];
                }
            }
    
    		$tracking_codesets = array();
    		foreach($tracking_codes as $tracking_code) {
    			$tracking_codeset = array();
    			$tracking_codeset['url'] = get_tt_url($tracking_code, $postcode, $locale);
    			$tracking_codeset['code'] = $tracking_code;
    			$tracking_codesets[] = $tracking_codeset;
    		}
    		return $tracking_codesets;
    	} else {
    		return false;
    	}
    }
    
    function get_tt_url($tracking_code = null, $postcode = null, $locale = null){
    	$url = 'https://www.dhlparcel.nl/nl/volg-uw-zending-0';
    	$query_args = array();
    	if ($tracking_code !== null) {
    		$query_args['tt'] = urlencode($tracking_code);
    	}
    
    	if ($postcode !== null) {
    		$query_args['pc'] = urlencode($postcode);
    	}
    
    	if ($locale !== null) {
    		$query_args['lc'] = urlencode($locale);
    	}
    
    	return add_query_arg($query_args, $url);
    }

    @pippijn thanks, which shortcode do you use?

    Thread Starter pippijn

    (@pippijn)

    @pippijn `I’ve already tried a number of things. via custom short code in function.php or via the custom_code.php as the link describes

    But I can’t manage what should be written here? Because I already get to see the URL just not filled

    • This reply was modified 4 years, 10 months ago by bud88.
    Thread Starter pippijn

    (@pippijn)

    this is the contents of custom_code.php:

    
    <?php
    
    if ( ! defined( 'ABSPATH' ) ) {
    	exit;
    }
    
    // Example for the short code [woo_mb_custom_code type="tracking-code"]
    if(isset($attr['type']) && $attr['type'] == 'tracking-code'){
    	//do_shortcode('[pr_dhl_tracking_link order_id="'. $order->get_id().'"]');
    	$tracking_urls = get_dhl_parcel_urls($order->get_id());
    	if ($tracking_urls){
    		foreach($tracking_urls as $tracking_url) {
    			printf('<a href="%s">Track & Trace - %s</a><br>', $tracking_url['url'], $tracking_url['code']);
    		}
    	}
    }
    

    Use this shortcode where you want the tracking url:
    [woo_mb_custom_code type=”tracking-code”]

    @pippijn thankss Men!!! I got it work with Woo Mail Customizer know.

    [ec_woo_custom_code type=”tracking-code”]

    Little bit differt.
    https://askerov.ticksy.com/article/15350/

Viewing 15 replies - 1 through 15 (of 15 total)

The topic ‘Shortcode is not working’ is closed to new replies.