WordPress: добавить пользовательский add_filter для пользовательских функций

Я справляюсь со сценарием, где мне нужно фильтровать содержимое моей пользовательской функции. Моя функция используется для отправки электронных писем, но мне нужно отфильтровать ее, как это делает ловушка wp_mail.

Вот моя функция:

function koku_crm_send_sendgrid($sendgrid_api_key, $to, $subject, $text, $html) {

$sendgrid = new \SendGrid($sendgrid_api_key);
$mail = new KCSendGrid\Mail();
$from = new KCSendGrid\Email(get_bloginfo( 'name' ), get_bloginfo( 'admin_email' ));
$mail->setFrom($from);
$mail->setSubject(html_entity_decode($subject, ENT_QUOTES, 'UTF-8'));

$content = new KCSendGrid\Content("text/plain", $text);
$mail->addContent($content);

$content = new KCSendGrid\Content("text/html", $html);
$mail->addContent($content);

$personalization = new KCSendGrid\Personalization();
$to = new KCSendGrid\Email(null, $to);
$personalization->addTo($to);
$mail->addPersonalization($personalization);

$sendgrid->client->mail()->send()->post($mail);

}

Я хочу отфильтровать эту переменную «$ to» перед отправкой электронного письма. Что-то похожее на перехват фильтра wp_mail.

Я много искал, пожалуйста, помогите мне в этом отношении. Огромное спасибо заранее.

0

Решение

Я думаю, что вам нужно использовать apply_filters($tag, $value) передает аргумент ‘value’ каждой из функций ‘hooked’ (используя add_filter) в указанный фильтр ‘tag’. Каждая функция выполняет некоторую обработку значения и возвращает измененное значение, которое будет передано следующей функции в последовательности.

Теперь давайте рассмотрим простой пример в теме Customizr. Давайте изменим URL ссылки в логотипе:

// Change url that is linked from logo
add_filter( 'tc_logo_link_url', 'change_site_main_link' );
function change_site_main_link() {
return 'http://example.com';
}

Внутри основного кода Customizr, в функции, которая отображает логотип (в class-header-header_main.php), Customizr имеет:

apply_filters( ‘tc_logo_link_url’, esc_url( home_url( ‘/’ ) ) )

Это где наш add_filter () перехватывает себя. Функция esc_url () удаляет недопустимые символы и т. Д. В URL-адресах, а функция home_url () возвращает домашний URL-адрес сайта. Таким образом, без какой-либо фильтрации, фильтр «tc_logo_link_url» возвращает адрес домашней страницы.

В этом примере мы даже не обращали внимания на входящие аргументы (домашний URL), потому что мы знали, что просто собираемся полностью его перезаписать.

Помните: когда вы используете фильтр, вы всегда должны что-то возвращать.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector