WP / Woo отправлять электронную почту пользовательскому мета-получателю во время публикации сообщения - PullRequest
0 голосов
/ 27 марта 2020

Я хочу отправить электронное письмо после публикации нового продукта. Электронная почта получателя добавляется в пользовательскую мета в продукте. Вот что я имею в своих функциях. php пока. Если я добавлю электронное письмо в функцию, она будет работать, но, к сожалению, я не смогу получить мета-пост Это потому, что функция запускается, когда продукт еще не сохранен? Как мне этого добиться?

function set_mail_html_content_type() {
    return 'text/html';
}
function notify_owner($post_id) {
    if ( get_post_type($post_id) == 'product' ) {
        $post = get_post($post_id);
        $owner_email = get_post_meta($post_id, 'my_custom_meta_here', true);
        $subject = "Hello";
        $message = "<p>Message goes here.</p>";
        add_filter('wp_mail_content_type', 'set_mail_html_content_type');
        wp_mail($owner_email, $subject, $message);
        remove_filter('wp_mail_content_type', 'set_mail_html_content_type');
    }
}
add_action('pending_to_publish', 'notify_owner');
add_action('draft_to_publish', 'notify_owner');
add_action('future_to_publish', 'notify_owner');
add_action('private_to_publish', 'notify_owner');
add_action('auto-draft_to_publish', 'notify_owner');

Я также попытался добавить / изменить следующее, не повезло:

global $post;
$owner_email = get_post_meta($post->ID, 'my_custom_meta_here', true);
$owner_email = get_post_meta(get_the_ID(), 'my_custom_meta_here', true);

1 Ответ

1 голос
/ 27 марта 2020

Хук действия состояния перехода после записи, используемый для функции обратного вызова, использует $post в качестве объекта WP_post, но вы используете $post_id, что неправильно. Так что для вашего случая вы могли бы использовать следующие опции:

1. Реализация хука действия {$old_status}_to_{$new_status}.

function set_mail_html_content_type() {
    return 'text/html';
}
function notify_owner($post) {
    if ( $post->post_type == 'product' ) {
        $owner_email = get_post_meta($post->ID, 'my_custom_meta_here', true);
        $subject = "Hello";
        $message = "<p>Message goes here.</p>";
        add_filter('wp_mail_content_type', 'set_mail_html_content_type');
        wp_mail($owner_email, $subject, $message);
        remove_filter('wp_mail_content_type', 'set_mail_html_content_type');
    }
}
add_action('pending_to_publish', 'notify_owner');
add_action('draft_to_publish', 'notify_owner');
add_action('future_to_publish', 'notify_owner');
add_action('private_to_publish', 'notify_owner');
add_action('auto-draft_to_publish', 'notify_owner');

2. Реализация действия {$new_status}_{$post->post_type} хук

function set_mail_html_content_type() {
    return 'text/html';
}
function notify_owner($post) {
    $owner_email = get_post_meta($post->ID, 'my_custom_meta_here', true);
    $subject = "Hello";
    $message = "<p>Message goes here.</p>";
    add_filter('wp_mail_content_type', 'set_mail_html_content_type');
    wp_mail($owner_email, $subject, $message);
    remove_filter('wp_mail_content_type', 'set_mail_html_content_type');
}
add_action('publish_product', 'notify_owner');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...