Shortcode is not working
-
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..
-
Can you confirm which country your webshop is in and where you are trying to use the shortcode?
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”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.
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.
The short code and email reference do not work for DHL Parcel unfortunately.
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 NetherlandsThank 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
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?
You’ll have to add a custom tag. Follow this guide:
https://docs.flycart.org/en/articles/1478810-how-to-add-custom-short-code-in-your-email-templatesthis 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/
- The topic ‘Shortcode is not working’ is closed to new replies.