php 在WooCommerce我的帐户下载中显示订单ID和订单日期

vc9ivgsu  于 2023-08-02  发布在  PHP
关注(0)|答案(2)|浏览(136)

我想在“我的帐户”下载页面中显示订单ID、订单日期和产品图片。

add_filter( 'woocommerce_account_downloads_column_download-product', 'display_product_image_on_account_downloads' );
function display_product_image_on_account_downloads( $download ) {
    // Targeting view order pages only
    if ( ! is_wc_endpoint_url( 'downloads' ) ) return;

    if ( $download['product_id'] > 0 ) {
        $product = wc_get_product( $download['product_id'] ); 
        $image   = $product->get_image( array(324, 194) ); // The product image
        $order_id = $order->get_id(); // The order id

        if ( $download['product_url'] ) {
            echo $image . '<a href="' . esc_url( $download['product_url'] ) . '">' . esc_html( $download['product_name'] ) . '</a>';
        echo '<p>' . esc_html( $order_id ) . '</p>';
            echo '<p>' . esc_html( wc_format_datetime( $order->get_date_created() ) ) . '</p>'; 
        } else {
            echo $image . esc_html( $download['product_name'] );
        }
    }
}

字符串
显示产品图像,但订单ID和订单日期显示不正确。有什么办法可以做到这一点吗?- 谢谢-谢谢

ih99xse1

ih99xse11#

我仔细检查了你的代码,发现它有一些问题。你可以使用这些版本:

add_filter( 'woocommerce_account_downloads_column_download-product', 'display_product_image_order_info_on_account_downloads', 10, 2 );
function display_product_image_order_info_on_account_downloads( $download, $item ) {
    // Targeting view order pages only
    if ( ! is_wc_endpoint_url( 'downloads' ) ) return;

    if ( $download['product_id'] > 0 ) {
        $product    = wc_get_product( $download['product_id'] );
        $image      = $product->get_image( array( 324, 194 ) ); // The product image
        $order_id   = $item->get_order_id(); // Get the order ID from the $item object
        $order_date = $item->get_order()->get_date_created(); // Get the order date from the $item object

        if ( $download['product_url'] ) {
            echo $image . '<a href="' . esc_url( $download['product_url'] ) . '">' . esc_html( $download['product_name'] ) . '</a>';
            echo '<p>' . esc_html( $order_id ) . '</p>';
            echo '<p>' . esc_html( wc_format_datetime( $order_date ) ) . '</p>'; 
        } else {
            echo $image . esc_html( $download['product_name'] );
        }
    }
}

字符串
你可以在function.php上使用它。

bvn4nwqk

bvn4nwqk2#

首先,woocommerce_account_downloads_column_download-product是一个动作钩子,并且在代码中没有定义变量$order
使用以下重新访问的代码版本:

add_action( 'woocommerce_account_downloads_column_download-product', 'display_product_image_on_account_downloads' );
function display_product_image_on_account_downloads( $download ) {
    // Targeting view order pages only
    if ( ! is_wc_endpoint_url( 'downloads' ) ) return;

    if ( $download['product_id'] > 0 ) {
        $product = wc_get_product( $download['product_id'] ); 
        $image   = $product->get_image( array(324, 194) ); // The product image

        if ( $download['product_url'] ) {
            echo $image . '<a href="' . esc_url( $download['product_url'] ) . '">' . esc_html( $download['product_name'] ) . '</a>';

            // Here you get the order ID
            if ( $download['order_id'] > 0 ) {
                // Get an instance of the WC_Order object
                $order = wc_get_order( $download['order_id'] );

                echo '<p>' . esc_attr( $download['order_id'] ) . '</p>'; 
                echo '<p>' . esc_html( wc_format_datetime( $order->get_date_created() ) ) . '</p>'; 
        } else {
            echo $image . esc_html( $download['product_name'] );
        }
    }
}

字符串
现在应该能用了

相关问题