ارسال خودکار مطالب وردپرس به ایمیل کاربران با افزونه رایگان
- مقالات آموزشی
- بروزرسانی شده در

اگه دوست دارید کاربران ثبتنامشده سایتتون بعد از انتشار هر نوشته جدید باخبر بشن، برای شروع به سرویسهای پیچیده نیاز ندارید. توی این آموزش از افزونه رایگان Code Snippets و قابلیت ارسال ایمیل خود وردپرس کمک میگیریم. کدی که میسازیم فقط موقع اولین انتشار نوشته اجرا میشه، برای هر کاربر یک ایمیل جدا میفرسته و لینک همون نوشته رو هم داخل پیام میذاره.
این روش بیشتر به درد سایتهای کوچیکی میخوره که تعداد کاربرانشون زیاد نیست. اگه فهرست بزرگی دارید یا قابلیتهایی مثل عضویت، لغو عضویت، زمانبندی و گزارش بازشدن ایمیل براتون مهمه، بهتره سراغ یک سرویس تخصصی خبرنامه برید. قابلیت ارسال ایمیلی FeedBurner هم از سال ۲۰۲۱ متوقف شده و برای این کار انتخاب مناسبی نیست.
آنچه در این مقاله میخوانید
آیا وردپرس قابلیت ارسال خودکار نوشتهها رو داره؟
وردپرس تابع wp_mail() رو برای فرستادن ایمیل داره، ولی در نسخه فعلی اون ابزار کامل و آمادهای برای ارسال خودکار نوشتههای جدید به مشترکها پیدا نمیکنید. یعنی وردپرس میتونه ایمیل رو بفرسته، اما ما باید مشخص کنیم پیام چه موقع، برای چه افرادی و با چه متنی ارسال بشه.
برای اضافهکردن این قابلیت از افزونه رایگان Code Snippets استفاده میکنیم. این افزونه توی مخزن رسمی وردپرس در دسترسه و اجازه میده کد رو بدون دستزدن به فایل functions.php قالب اضافه کنید. به این شکل، بعد از تغییر یا بهروزرسانی قالب هم کدتون از بین نمیره.
پیشنیازهای ارسال ایمیل نوشته جدید
- کاربرها باید توی سایتتون حساب وردپرسی داشته باشن و یک ایمیل معتبر وارد کرده باشن.
- قابلیت ارسال ایمیل روی هاستتون باید فعال باشه.
- باید برای فرستادن این پیامها از کاربران اجازه گرفته باشید و راه مشخصی هم برای توقف دریافت پیام در اختیارشون بذارید.
- محدودیت ساعتی یا روزانه ارسال ایمیل رو از شرکت هاستینگ بپرسید؛ چون این عدد روی همه هاستها یکسان نیست.
اگه حتی ایمیلهای عادی وردپرس هم به مقصد نمیرسن یا سر از پوشه اسپم درمیارن، اول راهنمای حل مشکل ارسال ایمیل در وردپرس رو ببینید. موفقبودن تابع wp_mail() فقط نشون میده وردپرس پیام رو به سیستم ارسال تحویل داده و به معنی رسیدن قطعی اون به صندوق ورودی نیست.
نصب افزونه رایگان Code Snippets
وارد پیشخوان وردپرس بشید و مسیر «افزونهها ← افزودن افزونه تازه» رو باز کنید. عبارت Code Snippets رو جستوجو کنید، افزونه رو نصب کنید و بعد روی دکمه فعالسازی بزنید.

اضافهکردن کد ارسال خودکار ایمیل
بعد از فعالکردن افزونه، از منوی پیشخوان به «Snippets ← Add New» برید. یک عنوان ساده مثل «ارسال ایمیل نوشته جدید» بنویسید و کد زیر رو توی ویرایشگر بذارید. برچسب آغازین <?php رو ننویسید؛ چون خود افزونه اون رو مدیریت میکنه.
function mihanwp_email_new_post_to_users( $new_status, $old_status, $post ) { if ( 'publish' !== $new_status || 'publish' === $old_status ) { return; } if ( 'post' !== $post->post_type ) { return; } $user_emails = get_users( array( 'fields' => 'user_email', ) ); if ( empty( $user_emails ) ) { return; } $subject = 'یک نوشته جدید منتشر شد: ' . get_the_title( $post ); $message = "سلام!\n\nیک نوشته جدید در سایت منتشر شده:\n"; $message .= get_the_title( $post ) . "\n"; $message .= get_permalink( $post ) . "\n\n"; $message .= 'اگه تمایلی به دریافت این پیامها ندارید، با مدیر سایت تماس بگیرید.'; foreach ( $user_emails as $email ) { if ( is_email( $email ) ) { wp_mail( $email, $subject, $message ); } }}add_action( 'transition_post_status', 'mihanwp_email_new_post_to_users', 10, 3 );حالت اجرای قطعهکد رو روی اجرای سراسری سایت تنظیم کنید. حالا گزینه ذخیره و فعالسازی رو بزنید تا کد شروع به کار کنه.

کد چطور کار میکنه؟
هوک transition_post_status تغییر وضعیت نوشته رو زیر نظر میگیره. هوک یعنی نقطهای از اجرای وردپرس که میتونیم کدمون رو به اون وصل کنیم. شرط اول باعث میشه کد فقط وقتی اجرا بشه که نوشته برای اولین بار به وضعیت «منتشرشده» میرسه. پس ویرایش یا بهروزرسانی یک نوشته منتشرشده، ایمیل تکراری نمیفرسته.
شرط بعدی اجازه میده ایمیل فقط برای نوشتههای معمولی وردپرس ارسال بشه. تابع get_users() ایمیل کاربران ثبتنامشده رو میگیره و is_email() ساختار هر آدرس رو بررسی میکنه. در پایان، wp_mail() پیام رو جداگانه برای هر کاربر میفرسته؛ پس گیرندهها نمیتونن آدرس ایمیل همدیگه رو ببینن.
تغییر عنوان و متن ایمیل
اگه میخواید عنوان ایمیل رو عوض کنید، متن جلوی متغیر $subject رو تغییر بدید. متغیر بخشی از کده که یک مقدار رو نگه مید. تابع get_the_title() هم عنوان نوشته جدید رو به موضوع ایمیل اضافه میکنه.
متن اصلی پیام داخل متغیر $message نوشته شده. عبارت \n متن رو به خط بعدی میبره و تابع get_permalink() لینک همون نوشته رو به پیام اضافه میکنه. بهتره جمله مربوط به توقف دریافت پیام رو نگه دارید و یک راه واقعی، مثل ایمیل پشتیبانی یا صفحه تنظیمات حساب کاربری، جلوی پای کاربر بذارید.
آزمایش ارسال ایمیل
قبل از اینکه از این کد برای نوشتههای اصلی استفاده کنید، یک حساب آزمایشی با ایمیلی بسازید که بهش دسترسی دارید. بعد یک نوشته مخصوص تست ایجاد کنید و اون رو منتشر کنید. صندوق ورودی و پوشه اسپم ایمیل آزمایشی رو ببینید و مطمئن بشید عنوان، متن و لینک نوشته درست نمایش داده میشن.

اگه ایمیلی دریافت نکردید، اول مطمئن بشید قطعهکد فعاله. بعد وضعیت ارسال ایمیل هاست و تنظیمات SMTP رو بررسی کنید. SMTP روشی برای تحویل ایمیله که معمولا ارسال پیامهای وردپرس رو مطمئنتر میکنه. یادتون نره اگه یک نوشته منتشرشده رو دوباره به پیشنویس برگردونید و باز منتشرش کنید، ممکنه پیام تازهای ارسال بشه. پس همه آزمایشها رو روی یک نوشته مخصوص تست انجام بدید.
محدودیتهای این روش
این راهکار جای یک خبرنامه کامل رو نمیگیره. ایمیلها داخل یک حلقه و همزمان با انتشار نوشته فرستاده میشن. پس وقتی تعداد کاربران بالا بره، ممکنه انتشار نوشته طول بکشه، درخواست از زمان مجاز عبور کنه یا شرکت هاستینگ جلوی ادامه ارسال رو بگیره. عدد ثابتی مثل ۱۰۰ یا ۲۰۰ نفر هم برای همه سایتها معنی نداره؛ محدودیت واقعی به هاست و سرویس ایمیلتون بستگی داره.
برای فهرستهای بزرگ، بهتره از سرویس خبرنامهای کمک بگیرید که صف ارسال، مدیریت رضایت کاربران، لغو عضویت و گزارش تحویل داشته باشه. هیچ کاربری رو هم بدون اینکه بدونه و رضایت بده، وارد فهرست پیامها نکنید.
سؤالات متداول
آیا خود وردپرس این قابلیت رو داره؟
وردپرس تابع داخلی wp_mail() رو برای ارسال ایمیل داره، ولی ابزار کامل و آمادهای برای فرستادن خودکار نوشتههای جدید به مشترکها نداره. با قطعهکد این آموزش مشخص میکنیم ایمیل چه موقع و برای چه افرادی ارسال بشه.
آیا افزونه Code Snippets رایگانه؟
بله، نسخه رایگان Code Snippets توی مخزن رسمی وردپرس در دسترسه و برای اجرای کد این آموزش کفایت میکنه.
آیا با ویرایش نوشته دوباره ایمیل فرستاده میشه؟
نه، کد وضعیت قبلی و جدید نوشته رو بررسی میکنه و با ویرایش عادی یک نوشته منتشرشده، ایمیل دوبارهای فرستاده نمیشه. ولی اگه نوشته رو به پیشنویس برگردونید و دوباره منتشرش کنید، ممکنه یک پیام تازه ارسال بشه.
این روش برای تعداد زیادی کاربر مناسبه؟
نه، برای فهرست بزرگ بهتره از یک سرویس تخصصی خبرنامه استفاده کنید. تعداد مجاز ارسال به محدودیت هاست و سرویس ایمیلتون بستگی داره و وردپرس سقف یکسانی برای همه سایتها مشخص نکرده.

برای ارسال نظر لطفا ابتدا ثبتنام کنید یا وارد شوید.