2017-08-15 11 views
0

カスタム関数のコンテンツをフィルタリングする必要があるシナリオに対応しています。私の関数は電子メールの送信に使用されますが、私はwp_mailフックのようにフィルタリングする必要があります。ここでWordPress:カスタム関数のカスタムadd_filterを追加します。

は私の関数である。

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); 

} 

は、私は、電子メールを送信する前に、変数「$へ」というをフィルタリングします。 wp_mail filter hookと似たようなものです。

私は多くの検索をしていますが、この点について私を助けてください。事前にありがとうございます。

+0

独自のフィルタ/フックを作成したい場合は、他のモジュールがフックしてメールの送信先を変更できますか?その場合は、カスタムフックの実装方法を調べてください。https://www.google.com/search?q=wordpress+create+own+filters – CBroe

+0

apply_filters();関数https://developer.wordpress.org/reference/functions/apply_filters/ –

+0

こんにちは@ Mo'menMohamed、[wp_mailフィルターフック](https://codex.wordpress.org/Plugin_API/Filter_Reference/)のようなものを作成したいwp_mail) –

答えて

1

apply_filters($tag, $value)は、 'value'引数を 'hooked'(add_filterを使用)の各関数に渡して、指定されたフィルタ 'tag'に渡します。各関数は値に対して何らかの処理を行い、シーケンス内の次の関数に渡す変更された値を返します。

次に、Customizrテーマの簡単な例を見てみましょう。ロゴ内のリンクのURLを変更してみましょう:Customizrのコアコード内

// 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'; 
} 

、(クラス・ヘッダ・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)に気付かず、完全に上書きしようとしていることがわかっています。

覚えていること:フィルターを使用するときは、必ず何かを返さなければなりません。

関連する問題