Files
2026-04-28 15:13:50 +02:00

202 lines
7.5 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* General block email
*
* Used to render information for the email editor WooCommerce content block (BlockEmailRenderer::WOO_EMAIL_CONTENT_PLACEHOLDER).
*
* The dynamic content part of the block can be placed here.
* Examples include:
*
* 1. Content with a lot of conditional logic
* 2. Content that can not be generated by personalization tags
* 3. Content for specific emails that does not include the typical WooCommerce order details
*
* @see https://woocommerce.com/document/template-structure/
* @package WooCommerce\Templates\Emails\Block
* @version 10.5.0
*/
defined( 'ABSPATH' ) || exit;
// phpcs:disable Squiz.PHP.EmbeddedPhp.ContentBeforeOpen -- removed to prevent empty new lines.
// phpcs:disable Squiz.PHP.EmbeddedPhp.ContentAfterEnd -- removed to prevent empty new lines.
use Automattic\WooCommerce\Enums\OrderStatus;
use Automattic\WooCommerce\Internal\Settings\PointOfSaleDefaultSettings;
if ( 'customer_invoice' === $email->id ) :
// Customer invoice email
// We are keeping this here until we have a better way to handle conditional content in the email editor.
?>
<?php if ( $order->needs_payment() ) { ?>
<p><?php
if ( $order->has_status( OrderStatus::FAILED ) ) {
printf(
wp_kses(
/* translators: %1$s Site title, %2$s Order pay link */
__( 'Sorry, your order on %1$s was unsuccessful. Your order details are below, with a link to try your payment again: %2$s', 'woocommerce' ),
array(
'a' => array(
'href' => array(),
),
)
),
esc_html( get_bloginfo( 'name', 'display' ) ),
'<a href="' . esc_url( $order->get_checkout_payment_url() ) . '">' . esc_html__( 'Pay for this order', 'woocommerce' ) . '</a>'
);
} else {
printf(
wp_kses(
/* translators: %1$s Site title, %2$s Order pay link */
__( 'An order has been created for you on %1$s. Your order details are below, with a link to make payment when youre ready: %2$s', 'woocommerce' ),
array(
'a' => array(
'href' => array(),
),
)
),
esc_html( get_bloginfo( 'name', 'display' ) ),
'<a href="' . esc_url( $order->get_checkout_payment_url() ) . '">' . esc_html__( 'Pay for this order', 'woocommerce' ) . '</a>'
);
}
?></p>
<?php } else { ?>
<p><?php
/* translators: %s Order date */
printf( esc_html__( 'Here are the details of your order placed on %s:', 'woocommerce' ), esc_html( wc_format_datetime( $order->get_date_created() ) ) );
?></p>
<?php
}
endif;
if ( 'customer_new_account' === $email->id ) :
?>
<?php if ( $set_password_url ) : ?>
<p><a href="<?php echo esc_attr( $set_password_url ); ?>"><?php printf( esc_html__( 'Set your new password.', 'woocommerce' ) ); ?></a></p>
<?php
endif;
endif;
if ( 'customer_reset_password' === $email->id && isset( $reset_key, $user_id ) ) :
// Customer reset password email.
?>
<p>
<a class="link" href="<?php echo esc_url( add_query_arg( array( 'key' => $reset_key, 'id' => $user_id, 'login' => rawurlencode( $user_login ) ), wc_get_endpoint_url( 'lost-password', '', wc_get_page_permalink( 'myaccount' ) ) ) ); ?>"><?php // phpcs:ignore WordPress.Arrays.ArrayDeclarationSpacing.AssociativeArrayFound ?>
<?php esc_html_e( 'Reset your password', 'woocommerce' ); ?>
</a>
</p>
<?php
endif;
/**
* Action hook for email classes to hook into the general block email template.
*
* @since 10.5.0
* @param bool $sent_to_admin Whether the email is being sent to admin.
* @param bool $plain_text Whether the email is being sent as plain text.
* @param WC_Email $email The email object.
*/
do_action( 'woocommerce_email_general_block_content', $sent_to_admin, $plain_text, $email );
/**
* Filter the list of email IDs that should not display order details.
*
* @since 10.5.0
* @param array $emails_without_order_details Array of email IDs that should not display order details.
*/
$emails_without_order_details = apply_filters( 'woocommerce_emails_general_block_content_emails_without_order_details', array() );
$accounts_related_emails = array(
'customer_reset_password',
'customer_new_account',
);
$emails_without_order_details = array_merge( $emails_without_order_details ?? array(), $accounts_related_emails );
if ( isset( $order ) && ! in_array( $email->id, $emails_without_order_details, true ) ) {
/**
* Woocommerce_email_order_details
*
* @hooked WC_Emails::order_details() Shows the order details table.
* @hooked WC_Structured_Data::generate_order_data() Generates structured data.
* @hooked WC_Structured_Data::output_structured_data() Outputs structured data.
* @since 2.5.0
*/
do_action( 'woocommerce_email_order_details', $order, $sent_to_admin, $plain_text, $email );
/**
* Woocommerce_email_order_meta
*
* @hooked WC_Emails::order_meta() Shows order meta data.
* @since 2.0.17
*/
do_action( 'woocommerce_email_order_meta', $order, $sent_to_admin, $plain_text, $email );
/**
* Woocommerce_email_customer_details
*
* @hooked WC_Emails::customer_details() Shows customer details
* @hooked WC_Emails::email_address() Shows email address
* @since 2.5.0
*/
do_action( 'woocommerce_email_customer_details', $order, $sent_to_admin, $plain_text, $email );
}
if ( 'customer_pos_completed_order' === $email->id || 'customer_pos_refunded_order' === $email->id ) :
if ( ! empty( get_option( 'woocommerce_pos_store_email', PointOfSaleDefaultSettings::get_default_store_email() ) )
|| ! empty( get_option( 'woocommerce_pos_store_phone' ) )
|| ! empty( get_option( 'woocommerce_pos_store_address', PointOfSaleDefaultSettings::get_default_store_address() ) ) ) :
?>
<!-- wp:group -->
<div class="wp-block-group">
<?php if ( ! empty( get_option( 'woocommerce_pos_store_name', PointOfSaleDefaultSettings::get_default_store_name() ) ) ) : ?>
<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading"><?php echo esc_html( get_option( 'woocommerce_pos_store_name', PointOfSaleDefaultSettings::get_default_store_name() ) ); ?></h3>
<!-- /wp:heading -->
<?php else : ?>
<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading"><?php echo esc_html__( 'Store Information', 'woocommerce' ); ?></h3>
<!-- /wp:heading -->
<?php endif; ?>
<?php if ( ! empty( get_option( 'woocommerce_pos_store_email', PointOfSaleDefaultSettings::get_default_store_email() ) ) ) : ?>
<!-- wp:paragraph -->
<p><?php echo esc_html( get_option( 'woocommerce_pos_store_email', PointOfSaleDefaultSettings::get_default_store_email() ) ); ?></p>
<!-- /wp:paragraph -->
<?php endif; ?>
<?php if ( ! empty( get_option( 'woocommerce_pos_store_phone' ) ) ) : ?>
<!-- wp:paragraph -->
<p><?php echo esc_html( get_option( 'woocommerce_pos_store_phone' ) ); ?></p>
<!-- /wp:paragraph -->
<?php endif; ?>
<?php if ( ! empty( get_option( 'woocommerce_pos_store_address', PointOfSaleDefaultSettings::get_default_store_address() ) ) ) : ?>
<!-- wp:paragraph -->
<p><?php echo esc_html( get_option( 'woocommerce_pos_store_address', PointOfSaleDefaultSettings::get_default_store_address() ) ); ?></p>
<!-- /wp:paragraph -->
<?php endif; ?>
</div>
<!-- /wp:group -->
<?php
endif;
if ( ! empty( get_option( 'woocommerce_pos_refund_returns_policy' ) ) ) :
?>
<!-- wp:group -->
<div class="wp-block-group">
<!-- wp:heading {"level":3} -->
<h3><?php echo esc_html__( 'Refund & Returns Policy', 'woocommerce' ); ?></h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p><?php echo esc_html( get_option( 'woocommerce_pos_refund_returns_policy' ) ); ?></p>
<!-- /wp:paragraph -->
</div>
<!-- /wp:group -->
<?php
endif;
endif;