2021年1月16日星期六

Woocommerce order dynamic output data is not working in WordPress Thickbox

I am creating a plugin to show live courier tracking result in woocommerce shop orders page. Here is the code

Adding javascript code

add_action( 'admin_head', 'admin_footer_tracking_js' );  function admin_footer_tracking_js() {      global $pagenow;      if ( $pagenow === 'edit.php' && isset($_GET['post_type']) && 'shop_order' === $_GET['post_type'] ) :      ?>      <script type='text/javascript'>      function trackParcel(orderId, parcelId){           jQuery.ajax({                  type: 'POST',                  url: '<?php echo admin_url('/admin-ajax.php'); ?>',                  data: {                      'action':   'mark_message_as_read',                      'dvs_order_id' : orderId,                                          'dvs_courier_tracking' : parcelId,                  },                  success: function (response) {                      console.log(response);                      jQuery('#track-thickbox').html(response);                  }              });      }        </script>      <?php      endif;  }  

Adding Tracking button in shop order coloumn

add_action( 'manage_shop_order_posts_custom_column', 'dvs_add_tracking_admin_list_column_content' );  function dvs_add_tracking_admin_list_column_content( $column ) {      global $post;      if ( 'dvs_show_tracking' === $column ) {          $order = wc_get_order( $post->ID );          $dvs_show_courier_list = get_post_meta( $order->get_id(), '_dvs_courier_list', true );          $dvs_show_courier_tracking = get_post_meta( $order->get_id(), '_dvs_courier_tracking', true );          add_thickbox();          echo'<a href="#TB_inline?width=600&height=550&inlineId=my-content-id" id="thickBoxLink" class="woocommerce-Button button thickbox" onclick="trackParcel(\'' . $order->get_id() . '\', \'' . $dvs_show_courier_tracking . '\')">Tracking</a>';            ?>            <div id="my-content-id" style="display:none;">          <p id='track-thickbox'>          </p>          </div>          <?php      }  }  

Curl request to get live tracking

add_action('wp_ajax_mark_message_as_read', 'get_mark_message_as_read');  function get_mark_message_as_read() {      $order = $_POST['dvs_order_id'];      $tracking = $_POST['dvs_courier_tracking'];        $curl = curl_init();      curl_setopt($curl, CURLOPT_URL, 'http://new.leopardscod.com/webservice/trackBookedPacket/format/json/');      curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);      curl_setopt($curl, CURLOPT_POST, 1);      curl_setopt($curl, CURLOPT_POSTFIELDS, array(          'api_key' => 'xxx',          'api_password' => 'xxx',          'track_numbers' => 'LE783655225'      ));      $response = curl_exec($curl);      curl_close($curl);        echo $response; // Send data back to JS      die();  }  

The code works and display data in the console but not in the output.

Can someone please guide what I did wrong ?

https://stackoverflow.com/questions/65756637/woocommerce-order-dynamic-output-data-is-not-working-in-wordpress-thickbox January 17, 2021 at 10:05AM

没有评论:

发表评论