PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Friday, March 18, 2022

[FIXED] How to fix php shortcode to show woocommerce download button

 March 18, 2022     html, php, shortcode, woocommerce, wordpress     No comments   

Issue

I am trying to view the download button belonging to the last order placed by a customer. Basically I have this code. It worked for other things like: displaying the purchase date, order total, product name etc, but it doesn't work with the downlad.

<?php

add_shortcode( 'order_download' , 'last_order_info_08' );
function last_order_info_08(){

// Get the WC_Customer instance Object for the current user
$customer = new WC_Customer( get_current_user_id() );

// Get the last WC_Order Object instance from current customer
$last_order = $customer->get_last_order();

// If this is the last order, then it shows the data from it
  if ( is_a( $last_order, 'WC_Order' ) ) {
     return $last_order->get_downloadable_items();
     }
}

return $last_order->get_downloadable_items(); it shows the word array instead of the download button. Could someone tell me where am I wrong? Excuse me, but I am relatively new to php.

// Edit - With probable solution //

Maybe I have found a solution. I modified the code by adding wc_get_template and array. This works well for users who have a download available. Unfortunately, however, users who have not made any purchases and therefore do not have a download available find themselves with a broken layout.

Is there any way to display an error message? or to correct this in any other way?

<?php
add_shortcode( 'order_download' , 'last_order_info_08' );
function last_order_info_08(){

// Get the WC_Customer instance Object for the current user
$customer = new WC_Customer( get_current_user_id() );

// Get the last WC_Order Object instance from current customer
$last_order = $customer->get_last_order();

// Works with array
$downloads = $last_order->get_downloadable_items();

// If this is the last order, then it shows the data from it
    if ( is_a( $last_order, 'WC_Order' ) ) {
        wc_get_template('button-downloads.php',
        array(
            'downloads'  => $downloads,
            'show_title' => true,
         )
     );
     } 
}

Solution

<?php
add_shortcode( 'order_download' , 'last_order_info_08' );
function last_order_info_08(){

// Get the WC_Customer instance Object for the current user
$customer = new WC_Customer( get_current_user_id() );

// Get the last WC_Order Object instance from current customer
$last_order = $customer->get_last_order();

// If this is the last order shows the data from it
  if ( is_a( $last_order, 'WC_Order' ) ) {

     // Works with array below
     $downloads = $last_order->get_downloadable_items();
     
     if ($downloads){
         wc_get_template(
         'button-downloads.php', // This is a template I placed in wp-content/themes/theme-child/woocommerce
         array(
         'downloads'  => $downloads,
         'show_title' => true,
         ));
         }
     } 
     
//The else part shows the warning message when a user has no order, this does not break the layout.
  else {
        ?><div class="woocommerce-message woocommerce-message--info woocommerce-Message woocommerce-Message--info woocommerce-info">
        <a class="woocommerce-Button button" href="<?php echo esc_url( apply_filters( 'woocommerce_return_to_shop_redirect', wc_get_page_permalink( 'shop' ) ) ); ?>"><?php esc_html_e( 'Browse products', 'woocommerce' ); ?></a>
        <?php esc_html_e( 'No order has been made yet.', 'woocommerce' ); ?>
        </div><?php
    }   
}


Answered By - Snake
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home
View mobile version

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing