为没有订单的用户显示一条短代码警告消息

Display a warning message in a shortcode for users without an order

在 functions.php 文件中,我有这个短代码,它显示了 woocommerce 客户下的最后一个订单的下载按钮。对于已经购买东西的客户,一切都很好,但是如果客户没有下载或没有订单,布局就会中断。我想这是因为没有什么可显示的。

所以我想给那些没有下载或没有下订单的人显示一个消息,我试过else但是没有用。

抱歉,我对 php 比较陌生,谁能帮我弄清楚如何引入警告消息?

add_shortcode( 'order_download' , 'last_order_info_08' );
function last_order_info_08( $downloads ){
    
$customer = new WC_Customer( get_current_user_id() );
$last_order = $customer->get_last_order();
$downloads = $last_order->get_downloadable_items();

if ($downloads) {
    wc_get_template(
        'button-downloads.php',
        array(
            'downloads'  => $downloads,
            'show_title' => true,
        )
    );
}
}

我稍微修改了代码,应该可以满足您的需要。你应该能够用这个替换当前代码。在任何页面上本地测试和确认短代码已添加并显示。如果您有一些奇怪的 CSS 设置,它可能会或可能不会在您的网站上正确显示。

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

    $customer = new WC_Customer( get_current_user_id() );

    $last_order = $customer->get_last_order();

    $shop_url = get_permalink( wc_get_page_id( 'shop' ) );

    // Check to see if they have an order
    if ($last_order) {
        // Get download items from last order.
        $downloads = $last_order->get_downloadable_items();
        // Check to see if it contains downloadable items
        if ($downloads) {
            wc_get_template(
                'button-downloads.php',
                array(
                    'downloads'  => $downloads,
                    'show_title' => true,
                )
            );
        } else {
            wc_add_notice( '<a class="woocommerce-Button button" href="'. $shop_url .'"> Browse products</a> No downloads available yet.', 'notice' );
        }
    } else {
        wc_add_notice( '<a class="woocommerce-Button button" href="'. $shop_url .'"> Browse products</a> No downloads available yet.', 'notice' );
    }
    // HERE we print the notices
    wc_print_notices();
}