我正在尝试在我的 Woocommerce 电子商店的thankyou.php 页面中添加一个img。我已经完成了将文件从 /plugins/woocommerce/... 移动到文件夹 /themes/... 的过程
您可以在下面找到thankyou.php 文件的代码。有必要这样做,因为我需要一些订单变量来生成img(总数和数字)。
<?php
if ( $order ) :
do_action( 'woocommerce_before_thankyou', $order->get_id() );
?>
<?php if ( $order->has_status( 'failed' ) ) : ?>
<p class="woocommerce-notice woocommerce-notice--error woocommerce-thankyou-order-failed"><?php esc_html_e( 'Unfortunately your order cannot be processed as the originating bank/merchant has declined your transaction. Please attempt your purchase again.', 'woocommerce' ); ?></p>
<p class="woocommerce-notice woocommerce-notice--error woocommerce-thankyou-order-failed-actions">
<a href="<?php echo esc_url( $order->get_checkout_payment_url() ); ?>" class="button pay"><?php esc_html_e( 'Pay', 'woocommerce' ); ?></a>
<?php if ( is_user_logged_in() ) : ?>
<a href="<?php echo esc_url( wc_get_page_permalink( 'myaccount' ) ); ?>" class="button pay"><?php esc_html_e( 'My account', 'woocommerce' ); ?></a>
<?php endif; ?>
</p>
<?php else : ?>
<?php wc_get_template( 'checkout/order-received.php', array( 'order' => $order ) ); ?>
<ul class="woocommerce-order-overview woocommerce-thankyou-order-details order_details">
<li class="woocommerce-order-overview__order order">
<?php esc_html_e( 'Order number:', 'woocommerce' ); ?>
<strong><?php echo $order->get_order_number(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></strong>
</li>
<li class="woocommerce-order-overview__date date">
<?php esc_html_e( 'Date:', 'woocommerce' ); ?>
<strong><?php echo wc_format_datetime( $order->get_date_created() ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></strong>
</li>
<?php if ( is_user_logged_in() && $order->get_user_id() === get_current_user_id() && $order->get_billing_email() ) : ?>
<li class="woocommerce-order-overview__email email">
<?php esc_html_e( 'Email:', 'woocommerce' ); ?>
<strong><?php echo $order->get_billing_email(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></strong>
</li>
<?php endif; ?>
<li class="woocommerce-order-overview__total total">
<?php esc_html_e( 'Total:', 'woocommerce' ); ?>
<strong><?php echo $order->get_formatted_order_total(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></strong>
</li>
<?php if ( $order->get_payment_method_title() ) : ?>
<li class="woocommerce-order-overview__payment-method method">
<?php esc_html_e( 'Payment method:', 'woocommerce' ); ?>
<strong><?php echo wp_kses_post( $order->get_payment_method_title() ); ?></strong>
</li>
<?php endif; ?>
</ul>
<img
class="qrcodecz"
src="https://api.paylibo.com/paylibo/generator/czech/image?accountNumber=2202681982&bankCode=2010&amount=<?php echo $order->get_subtotal(); ?>&currency=CZK&vs=<?php echo $order->get_order_number() ?>&message=svetvramu.cz&size=200"
alt="QR platba"
/>
<?php endif; ?>
<?php do_action( 'woocommerce_thankyou_' . $order->get_payment_method(), $order->get_id() ); ?>
<?php do_action( 'woocommerce_thankyou', $order->get_id() ); ?>
<?php else : ?>
<?php wc_get_template( 'checkout/order-received.php', array( 'order' => false ) ); ?>
<?php endif; ?>
这个特定的代码是我试图生成的,但它不起作用。
<img
class="qrcodecz"
src="https://api.paylibo.com/paylibo/generator/czech/image?accountNumber=2202681982&bankCode=2010&amount=<?php echo $order->get_subtotal(); ?>&currency=CZK&vs=<?php echo $order->get_order_number() ?>&message=svetvramu.cz&size=200"
alt="QR platba"
/>
thankyou.page 没有变化(订单总数仍然相同)。我编辑的页面正确吗?我想是的,因为列表肯定是从这个文件生成的。
感谢您的任何提示!
您不需要覆盖 checkout/thankyou.php 模板文件。相反,您可以使用以下修改后的代码:
add_action( 'woocommerce_thankyou', 'display_order_received_qr_code', 10, 1 );
function display_order_received_qr_code( $order_id ) {
$order = wc_get_order($order_id);
printf('<img class="qrcodecz" alt="QR platba" src="%s" />',
add_query_arg( array(
'accountNumber' => '2202681982',
'bankCode' => '2010',
'amount' => $order->get_subtotal(),
'currency' => 'CZK',
'vs' => $order->get_order_number(),
'message' => 'svetvramu.cz',
'size' => 200,
), 'https://api.paylibo.com/paylibo/generator/czech/image' ),
);
}
代码位于活动子主题(或活动主题)的functions.php 文件中。已测试并有效。
在订单收到(谢谢)页面上,您将得到类似以下内容: