معرفی تابع های وردپرس-قسمت چهارم

علی حسین شهابی

1395/8/22

نظر0

با سلام خدمت شما دوستان گلم

جلسه قبلی یه سری توابع رو درباره ی پرمالینک ها و تصاویر بندانشتی معرفی و کار کردیم.

خب تو این جلسه میخوام توابع ، فیلترها و اکشن های مربوط به ارسال ایمیل در وردپرس رو بررسی کنیم.

25 – تابع wp_mail

این تابع ماند تابع mail در php ، ایمیل ارسال می کند.

در این تابع نام ارسال کننده ایمیل به صورت پیشفرض “WordPress” و آدرس ایمیل پیشفرض “wordpress@yoursite.com” می باشد که می توانیم آنها را با استفاده از فیلترهای ‘wp_mail_from’ و ‘wp_mail_from_name’  عوض نماییم.

From: "Example User" <email@example.com>

نوع محتوای ایمیل به صورت پیشفرض ‘text/plain’ است و نمیتوان کدهای HTML در آن قرار داد  که می توان با استفاده از فیلتر ‘wp_mail_content_type’ تغییر داد .

نوع charset ایمیل به صورت پیش فرض همان charset سایت است ولی میتوان با استفاده از فیلتر ‘wp_mail_charset’ آن را عوض کرد.

 <?php wp_mail( $to, $subject, $message, $headers, $attachments ); ?>

پارامتر $to : همان گیرنده ایمیل است.

 

پارامتر $subject : موضوع ایمیل است.

پارامتر $message : محتوای ایمیل است.

پارمتر $headers : تعیین یک هدر برای ایمیل است (مانند تعیین CC در ایمیل)

پارامتر $attachments : فایل هایی است که می خواهیم به ایمیل متصل نماییم.

مقدار برگشتی این تابع مقدار true یا false است که تعیین می کند آیا ایمیل به درستی ارسال شد یا خیر .

 

مثال ساده :

<?php wp_mail( 'me@example.net', 'The subject', 'The message' ); ?>

 

مثال : ارسال ایمیل به همراه یک فایل و تعیین هدر

<?php
$attachments = array( WP_CONTENT_DIR . '/uploads/file_to_attach.zip' );
$headers = 'From: My Name <myname@example.com>' . "\r\n";
wp_mail( 'test@example.org', 'subject', 'message', $headers, $attachments );
?>

مثال :ارسال ایمیل به چندین نفر :

<?php
$multiple_recipients = array(
    'recipient1@example.com',
    'recipient2@foo.example.com'
);
$subj = 'The email subject';
$body = 'This is the body of the email';
wp_mail( $multiple_recipients, $subj, $body );
?>

مثال : ارسال ایمیل با تعیین نوع محتوای ایمیل () با استفاده از فیلتر

<?php
add_filter( 'wp_mail_content_type', 'set_html_content_type' );

$to = 'sendto@example.com';
$subject = 'The subject';
$body = 'The email body content';

wp_mail( $to, $subject, $body );

// Reset content-type to avoid conflicts -- http://core.trac.wordpress.org/ticket/23578
remove_filter( 'wp_mail_content_type', 'set_html_content_type' );

function set_html_content_type() {
	return 'text/html';
}
?>

در مثال بالا بعد از اینکه ایمیل را ارسال کردیم با استفاده از خط زیر تنظیمات content_type را به حالت اول برگردانیم تا بعد یه موقع تداخلی پیش نیاید.

// Reset content-type to avoid conflicts -- http://core.trac.wordpress.org/ticket/23578
remove_filter( 'wp_mail_content_type', 'set_html_content_type' );

 

مثال :

$to = 'sendto@example.com';
$subject = 'The subject';
$body = 'The email body content';
$headers = array('Content-Type: text/html; charset=UTF-8');

wp_mail( $to, $subject, $body, $headers );
?>

مثال :ارسال ایمیل به همراه تعیین هدر

<?php
// assumes $to, $subject, $message have already been defined earlier...

$headers[] = 'From: Me Myself <me@example.net>';
$headers[] = 'Cc: John Q Codex <jqc@wordpress.org>';
$headers[] = 'Cc: iluvwp@wordpress.org'; // note you can just use a simple email address

wp_mail( $to, $subject, $message, $headers );
?>

خب حالا بریم سراغ فیلترهای مربوط به ایمیل :

فیلتر wp_mail

به وسیله ی این فیلتر ما می توانیم پارامترهایی را که برای ارسال ایمیل به تابع wp_mail ارسال میکردیم رو دستکاری کنیم.

در واقع این فیلتر قبل از اینکه ایمیل رو ارسال کنه.پارامترهای ایمیل رو برای ما میفرسته و ما میتونیم تغییرات لازم رو بهشون بدیم و پارامترهای دستکاری شده رو در قالب یک آرایه بفرستیم براش

add_filter( 'wp_mail', 'my_wp_mail_filter' );
function my_wp_mail_filter( $args ) {
	
	$new_wp_mail = array(
		'to'          => $args['to'],
		'subject'     => $args['subject'],
		'message'     => $args['message'],
		'headers'     => $args['headers'],
		'attachments' => $args['attachments'],
	);
	
	return $new_wp_mail;
}

 

فیلتر wp_mail_from

با استفاده از این فیلتر ما می توانیم ایمیل فرسنده ی پیشفرض در وردپرس رو تغییر بدیم.

مثال : ایمیل پیشفرض را  به ایمیل webmaster@mydomainname.com تغییر دادیم.

 

add_filter( 'wp_mail_from', 'custom_wp_mail_from' );
function custom_wp_mail_from( $original_email_address ) {
	//Make sure the email is from the same domain 
	//as your website to avoid being marked as spam.
	return 'webmaster@mydomainname.com';
}

مثال : همان مثال قبلی را می توانیم اینگونه هم بنویسیم یعنی با استفاده از تابع anonymous . این  نوع تابع نام ندارد و فقط به صورت بدنه می باشد.

add_filter( 'wp_mail_from', function( $email ) {
	return 'webmaster@mydomainname.com';
});

 

فیلتر wp_mail_from_name :

با استفاده از این فیلتر در واقع همان نام فرسنده یا  “from name”  را تغییر می دهیم.

مثال : در این مثال نام فرستنده ی ایمیل رو به  WordPress Email System تغییر دادیم.

add_filter( 'wp_mail_from_name', 'custom_wp_mail_from_name' );
function custom_wp_mail_from_name( $original_email_from ) {
	return 'WordPress Email System';
}

مثال : همان مثال قبلی را با استفاده از توابع anonymous  انجام دادیم.

add_filter( 'wp_mail_from_name', function( $name ) {
	return 'WordPress Email System';
});

 

فیلتر wp_mail_content_type

با استفاده از این فیلتر نوع محتوای ایمیل (content type) رو که به صورت پیشفرض  ‘text/plain’ است را تغییر می دهیم.

مثال : در این مثال ما نوع محتوای ایمیل (content type)  رو به ‘text/html’  تغییر می دهیم.

add_filter( 'wp_mail_content_type', 'set_content_type' );
function set_content_type( $content_type ) {
	return 'text/html';
}

توجه کنید که انواع مختلی از محتوای متن یا MIME وجود دارد ولی رایح ترین آنها همان ‘text/html’ و text/plain’ است.

 

فیلتر wp_mail_charset

با استفاده از این فیلتر نوع charset ایمیل امون رو تعیین میکنیم که به صورت پیشفرض همان charset یا یونیکد سایت امون می باشد.

مثال : charset یا یونیکد ایمیل رو به  UTF-32 تغییر دادیم

add_filter( 'wp_mail_charset', 'change_mail_charset' );
function change_mail_charset( $charset ) {
	return 'UTF-32';
}

 

در آخر نوبت میرسه به یک اکشن (action)  در ارتباط به ایمیل وردپرس :

اکشن phpmailer_init :

همان طور که می دانید وردپرس برای ارسال ایمیل از PHPMailer استفاده می کند. حالا ما با استفاده از این اکشن می توانیم به  object و آرگمان های  PHP Mailer دسترسی داشته باشیم.

مثال : در این مثال ما تنظیمات SMTP رو تغییر میدیم

add_action( 'phpmailer_init', 'my_phpmailer_example' );
function my_phpmailer_example( $phpmailer ) {
    $phpmailer->isSMTP();     
    $phpmailer->Host = 'smtp.example.com';
    $phpmailer->SMTPAuth = true; // Force it to use Username and Password to authenticate
    $phpmailer->Port = 25;
    $phpmailer->Username = 'yourusername';
    $phpmailer->Password = 'yourpassword';
}

خب اینم از جلسه ی امروز

 

مثل همیشه نظر یادتون نره.با من در ارتباط باشین.

اینستاگرام علی حسین شهابی لینکدین علی حسین شهابی

0 نظر

ارسال نظر جدید

 
Not signed in

کلیه حقوق مادی و معنوی , متعلق به سایت (Alihossein.ir)می باشد ,انتشار مطالب بدون ذکر منبع از نظر اخلاقی و شرعی صحیح نمی باشد.