programing

Woocommerce의 이메일 템플릿을 미리 보는 방법

elecom 2023. 3. 19. 17:52
반응형

Woocommerce의 이메일 템플릿을 미리 보는 방법

Woocommerce의 다른 이메일 템플릿을 미리 볼 수 있는 옵션을 찾을 수 없습니다.Woocommerce의 admin 섹션에는 고객의 "Order Received" 이메일을 미리 볼 수 있는 링크가 있습니다.단, 관리자에게 발송된 "Order Received" 메일을 편집하여 미리 보고 싶습니다.

WP Better 이메일 플러그인과 WP 이메일 템플릿 플러그인을 사용해봤지만 Woocommerce의 모든 메일에 미리보기 버튼을 제공하지 않았습니다.

주문 후 관리자 이메일을 받을 때까지 10분 정도 지연되므로 주문을 통해 이메일 템플릿을 미리 볼 수 없습니다.

admin-ajax.php 스크립트를 통해 실행되는 작은 함수를 만들었습니다.

https://example.org/wp-admin/admin-ajax.php?action=previewemail&file=emails/customer-processing-order.php&order=180

기능:

  • 글로벌 설정$order에서 지정된 ID를 가진 오더에 대한 변수order파라미터
  • 로 지정된 전자 메일템플릿을 로드하다file파라미터를 지정합니다.

이 코드는 다음과 같습니다(새로운 플러그인 또는 기존 php에 추가해야 합니다).

/**
 * Open a preview e-mail.
 *
 * @return null
 */
function preview_email()
{
    global $order;

    $filename = $_GET['file'];
    $orderId  = $_GET['order'];

    $order    = new WC_Order($orderId);

    include $filename;

    return null;
}

add_action('wp_ajax_previewemail', 'preview_email');    

빌트인우 기능을 사용하여 위 답변의 수정 버전입니다.장점은 테마와 기본 플러그인 템플릿 경로 모두에서 검색된다는 것입니다.

/**
 * Open a preview e-mail.
 *
 * @return null
 */
function previewEmail() {

    if (is_admin()) {
        $default_path = WC()->plugin_path() . '/templates/';

        $files = scandir($default_path . 'emails');
        $exclude = array( '.', '..', 'email-header.php', 'email-footer.php','plain' );
        $list = array_diff($files,$exclude);
        ?><form method="get" action="<?php echo site_url(); ?>/wp-admin/admin-ajax.php">
<input type="hidden" name="order" value="2055">
<input type="hidden" name="action" value="previewemail">
        <select name="file">
        <?php
        foreach( $list as $item ){ ?>
            <option value="<?php echo $item; ?>"><?php echo str_replace('.php', '', $item); ?></option>
        <?php } ?>
        </select><input type="submit" value="Go"></form><?php
        global $order;
        $order = new WC_Order($_GET['order']);
        wc_get_template( 'emails/email-header.php', array( 'order' => $order ) );


        wc_get_template( 'emails/'.$_GET['file'], array( 'order' => $order ) );
        wc_get_template( 'emails/email-footer.php', array( 'order' => $order ) );

    }
    return null; 
}

add_action('wp_ajax_previewemail', 'previewEmail');

고객님의 요구에 맞는 솔루션(플러그인)을 개발했습니다.단, 이용 가능한 기본 이메일 템플릿에서만 사용할 수 있습니다.이는 WooCommerce가 이메일을 관리하는 방법의 특성 때문입니다.기투브

WordPress Repo

언급URL : https://stackoverflow.com/questions/15006841/how-to-preview-email-templates-of-woocommerce

반응형