sajad 731 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 سلام دوستان چطور میشه یه فرم html رو تبدیل به یه فرم پویا کرد.؟ یعنی اطلاعاتی که داخلش درج میشه یه به یه ایمیلی ارسال بشه و یا تو یه بخشی از وردپرس بصورت لیستی ذخیره بشن؟ مثلا این فرم html رو چطور میشه تبدیل کرد؟ <form action="index.html" method="post" class="subscribe-form"> <input type="email" name="email" class="subscribe-input" placeholder="Email address" autofocus> <button type="submit" class="subscribe-submit">Subscribe</button> </form> ممنون نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 میشه ار ajax برای ارسال اطلاعات داده شده در فرم به یک ایمیلی استفاده کنید. نقل قول لینک به ارسال
sajad 731 ارسال شده در مرداد 96 مالک گزارش بازنشر ارسال شده در مرداد 96 در 7 دقیقه قبل، mehran-b گفته است : میشه ار ajax برای ارسال اطلاعات داده شده در فرم به یک ایمیلی استفاده کنید. ممنون مهران جان این مورد رو میدونم که میشه با استفاده از php و یا ajax و یا به روش های دیگه داده های ورودی رو به یه ایمیلی ارسال کرد. اما دنبال راهکار و نحوه انجام اون هستم نه چیز دیگر. نقل قول لینک به ارسال
Black_Sky 6349 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 اموزش زیر دنبال کنید : https://code.tutsplus.com/tutorials/build-a-newsletter-system-with-php-and-mysql--net-5742 2 نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 (ویرایش شده) در ۱ ساعت قبل، m4xs051 گفته است : ممنون مهران جان این مورد رو میدونم که میشه با استفاده از php و یا ajax و یا به روش های دیگه داده های ورودی رو به یه ایمیلی ارسال کرد. اما دنبال راهکار و نحوه انجام اون هستم نه چیز دیگر. خوب من در خصوص ارسال درخواست AJAX به وردپرس یه نمونه براتون آماده کردم. در این مثال ما یک فرم داریم با یک فیلد به نام name که این name با AJAX ارسال میشه به وردپرس و نتیجه از وردپرس دریافت و نمایش داده میشه. ابتدا باید یه اکشن Ajax اضافه کنیم به وردپرس. برای این کار کد زیر رو درون فایل functions.php قالب وردپرس میذاریم. add_action('wp_ajax_form', 'form'); add_action('wp_ajax_nopriv_form', 'form'); function form() { $name = $_REQUEST['name']; header('Access-Control-Allow-Origin: *'); wp_send_json(array('name' => $name)); } کد بالا اکشن form رو به AJAX Api وردپرس اضافه میکنه که از این طریق در دسترس هست. http://your-domain.com/wp-admin/admin-ajax.php?action=form&name=نام وارد شده که اگر این آدرس رو در مرورگر وارد کنیم یک آرایه به صورت رشته JSON برگشت داده میشه که کلید آرایه name هست و مقدار آرایه برابر با مقدار وارد شده در برابر پارامتر name هست. خوب حالا می رسیم به بخش HTML و JavaScript کار. کد به شکل زیر هست: <html> <head> <script src="https://code.jquery.com/jquery-3.2.1.min.js" ></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.form/4.2.2/jquery.form.min.js"></script> <script> $(document).ready(function() { $('#jsonForm').ajaxForm({ dataType: 'json', beforeSubmit: validate, success: processJson }); }); function validate(formData, jqForm, options) { if(!formData[1].value) { alert('لطفا نام خود را وارد کنید.'); return false; } } function processJson(data) { alert('نام شما: ' + data.name); } </script> </head> <body> <form id="jsonForm" action="http://your-domain.com/wp-admin/admin-ajax.php" method="post"> <input type="hidden" name="action" value="form"> Name: <input type="text" name="name"> <input type="submit" value="Submit Name"> </form> </body> </html> کد بالا از Jquery و پلاگین Jquery Form استفاده میکنه. نحوه کار به این شکله که اگر فیلد name خالی باشه و بر روی submit زده بشه یه alert نمایان میشه که میگه لطفا نام خود را وارد کنید. ولی در صورت پر کردن فیلد name و زدن submit فرم ، فیلد name و فیلد action که به شکل hidden در فرم جاسازی شده به action فرم که همون آدرس Ajax Api وردپرس هست ارسال میشه و در جواب همون JSON ای که در بالا توضیح دادم ارسال میشه که با استفاده از تابع processJson عبارت نام شما: نام وارد شده alert میشه. پ.ن: آموزشی که ارسال شد صرفا یک آموزش جهت استفاده از AJAX در وردپرس بود. اگر از روی آموزش نتونستید ارسال ایمیل به همین روش رو پیاده کنید بگید که راجع به اونم یه چیزایی بهتون بگم. ویرایش شده مرداد 96 توسط mehran-b 3 نقل قول لینک به ارسال
sajad 731 ارسال شده در مرداد 96 مالک گزارش بازنشر ارسال شده در مرداد 96 در 3 ساعت قبل، mehran-b گفته است : پ.ن: آموزشی که ارسال شد صرفا یک آموزش جهت استفاده از AJAX در وردپرس بود. اگر از روی آموزش نتونستید ارسال ایمیل به همین روش رو پیاده کنید بگید که راجع به اونم یه چیزایی بهتون بگم. ممنون دوست عزیز تو این زمینه بخصوص در مورد ajax اطلاعات زیادی ندارم که به چه صورت کار میکنه. اگه امکان داره یه آموزش تو همین تاپیک داشته باشید که هر زمان که فرد دیگری هم قصد ساهت فرم داشت بتونه از آموزش شما استفاده لازم رو ببره. باتشکر نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 در 2 ساعت قبل، m4xs051 گفته است : ممنون دوست عزیز تو این زمینه بخصوص در مورد ajax اطلاعات زیادی ندارم که به چه صورت کار میکنه. اگه امکان داره یه آموزش تو همین تاپیک داشته باشید که هر زمان که فرد دیگری هم قصد ساهت فرم داشت بتونه از آموزش شما استفاده لازم رو ببره. باتشکر خوب برای اینکه بتونیم به شخص عضو شده ایمیل ارسال کنیم نام و نام خانوادگی و ایمیلش رو توسط فرم زیر دریافت میکنیم. <html lang="fa-IR" dir="rtl"> <head> <script src="https://code.jquery.com/jquery-3.2.1.min.js" ></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.form/4.2.2/jquery.form.min.js"></script> <script> $(document).ready(function() { $('#jsonForm').ajaxForm({ dataType: 'json', success: processJson }); }); function processJson(data) { alert(data.message); } </script> </head> <body> <form id="jsonForm" action="http://your-domain.com/wp-admin/admin-ajax.php" method="post"> <input type="hidden" name="action" value="form"> نام و نام خانوادگی: <input type="text" name="name" required> ایمیل: <input type="email" name="email" required> <input type="submit" value="ارسال فرم"> </form> </body> </html> فرم دارای مشخصات قبلی هست فقط با این تفاوت که یه فیلد ایمیل بهش اضافه شده و در این مثال پیام نمایش داده شده به کاربر پس از زدن submit به طور کامل از سرور دریافت و نمایش داده میشه. خوب حالا بک اند کار هم اینطوری میشه: add_action('wp_ajax_form', 'form'); add_action('wp_ajax_nopriv_form', 'form'); function form() { $name = $_REQUEST['name']; $email = $_REQUEST['email']; $text = $name . ' عزیز، شما با موفقیت به عضویت خبرنامه سایت ما در آمدید.'; $status = wp_mail($email, 'پیام خوش آمد گویی', $text); header('Access-Control-Allow-Origin: *'); if($status) wp_send_json(array('message' => 'شما با موفقیت به عضویت خبرنامه سایت ما در آمدید.')); else wp_send_json(array('message' => 'متاسفانه مشکلی در عضویت شما در خرنامه پیش آمده است. لحظاتی بعد دوباره تلاش کنید.')); } در توضیح بخش بک اِند باید بگم که ابتدا مقدار name و email که از فرم ارسال شده رو در دو متغیر ذخیره میکنیم سپس متن خوش آمد گویی را که به شکل: نام وارد شده عزیز، شما با موفقیت به عضویت خبرنامه سایت ما در آمدید. هست رو به عنوان متن ایمیلی با subject پیام خوش آمد گویی به ایمیل وارد شده توسط کاربر ارسال به وسیله تابع wp_mail ارسال میکنیم. تابع wp_mail در صورت ارسال موفق ایمیل مقدار TRUE و در صورت ناموفق بودن پروسه ارسال ایمیل مقدار FALSE رو برمیگردونه. که ما با استفاده از یه شرط ساده از موفق بودن یا نبودن ارسال ایمیل مطلع میشیم و در صورت موفق بودن عبارت شما با موفقیت به عضویت خبرنامه سایت ما در آمدید. و در صورت ناموفق بودن فرآیند ارسال عیارت متاسفانه مشکلی در عضویت شما در خرنامه پیش آمده است. لحظاتی بعد دوباره تلاش کنید. به صورت آرایه انکود شده JSON با کلید message به Jquery ارسال میکینم که Jquery هم دقیقا متن ارسال شده رو alert میکنه. 3 نقل قول لینک به ارسال
Morteza 34190 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 سلام ضمن تشکر از @mehran-b بابت کدی که آماده کرد. دو مورد پیشنهاد هم دارم. 1- برای اکشن فرم بهتره که به آدرس مستقیم وردپرس اشاره نشه و بجاش یک فایل اسکریپت ایجاد بشه و اون enqueue بشه تا آدرس رو خود وردپرس ایجاد و به ایجاکس الحاق کنه. 2- برای ذخیره سازی اطلاعات تماس میشه مقادیر رو ایمیل نکرد و بجای با wp_insert_post اونها رو به یک پست تایپ(که از قبل مثلا ساختیم) ارسال و ذخیره کرد. ممنون از بچه ها که بحث های فنی رو توی انجمن ایجاد دنبال میکنن 2 نقل قول لینک به ارسال
sajad 731 ارسال شده در مرداد 96 مالک گزارش بازنشر ارسال شده در مرداد 96 @mehran-b عزیز ممنون بابت آموزش. اگه مشکلی باشه مجدد همین جا مطرح میکنم تا تاپیک کامل تر بشه. اما یه نکته: این فرم الان قابلیت ذخیره نام و آدرس ایمیل رو نداره تو بخشی از سایت درسته؟ برای اینکار چطور میشه طبق پیشنهادی که @Morteza عزیز و بزرگوار داد رفت جلو و مثلا اطلاعات که شامل نام و آدرس ایمیل هست رو تو یه پست تایپ که از قبل ساخته شده مثلا newsletter ثبت کرد.؟ نقل قول لینک به ارسال
sajad 731 ارسال شده در مرداد 96 مالک گزارش بازنشر ارسال شده در مرداد 96 در 49 دقیقه قبل، Morteza گفته است : 1- برای اکشن فرم بهتره که به آدرس مستقیم وردپرس اشاره نشه و بجاش یک فایل اسکریپت ایجاد بشه و اون enqueue بشه تا آدرس رو خود وردپرس ایجاد و به ایجاکس الحاق کنه. ===> مزیت این روش چیه آقا @Morteza ؟ ابتدایی تر میتونید توضیح بدین؟ من اطلاعات زیادی در این مورد ندارم. مرسی... نقل قول لینک به ارسال
Morteza 34190 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 مثلا بصورت ساده یک پست تایپ ایجاد می کنیم: function newsletter_post_type() { register_post_type( 'newsletter', array( 'labels' => array( 'name' => __( 'خبرنامه' ), 'singular_name' => __( 'خبرنامه' ) ), 'public' => true, 'has_archive' => true, ) ); } add_action( 'init', 'newsletter_post_type' ); کد گفته شده رو به این صورت تغییر میدیم: add_action('wp_ajax_form', 'form'); add_action('wp_ajax_nopriv_form', 'form'); function form() { $name = $_REQUEST['name']; $email = $_REQUEST['email']; $text = $name . ' عزیز، شما با موفقیت به عضویت خبرنامه سایت ما در آمدید.'; //افزودن نوشته wp_insert_post( array( 'post_title' => wp_strip_all_tags( $name ), 'post_content' => $email, 'post_status' => 'publish', 'post_type' =>'newsletter' ); ); $status = wp_mail($email, 'پیام خوش آمد گویی', $text); header('Access-Control-Allow-Origin: *'); if($status) wp_send_json(array('message' => 'شما با موفقیت به عضویت خبرنامه سایت ما در آمدید.')); else wp_send_json(array('message' => 'متاسفانه مشکلی در عضویت شما در خرنامه پیش آمده است. لحظاتی بعد دوباره تلاش کنید.')); } البته کدها تست نشده 2 نقل قول لینک به ارسال
Morteza 34190 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 در 35 دقیقه قبل، m4xs051 گفته است : در ۱ ساعت قبل، Morteza گفته است : 1- برای اکشن فرم بهتره که به آدرس مستقیم وردپرس اشاره نشه و بجاش یک فایل اسکریپت ایجاد بشه و اون enqueue بشه تا آدرس رو خود وردپرس ایجاد و به ایجاکس الحاق کنه. ===> مزیت این روش چیه آقا @Morteza ؟ ابتدایی تر میتونید توضیح بدین؟ من اطلاعات زیادی در این مورد ندارم. مرسی... بیشتر بحث امنیت هست. تا کاربر مستقیم به آدرس ها دسترسی نداشته باشه. 1 نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 (ویرایش شده) در 5 دقیقه قبل، Morteza گفته است : مثلا بصورت ساده یک پست تایپ ایجاد می کنیم: function newsletter_post_type() { register_post_type( 'newsletter', array( 'labels' => array( 'name' => __( 'خبرنامه' ), 'singular_name' => __( 'خبرنامه' ) ), 'public' => true, 'has_archive' => true, ) ); } add_action( 'init', 'newsletter_post_type' ); کد گفته شده رو به این صورت تغییر میدیم: add_action('wp_ajax_form', 'form'); add_action('wp_ajax_nopriv_form', 'form'); function form() { $name = $_REQUEST['name']; $email = $_REQUEST['email']; $text = $name . ' عزیز، شما با موفقیت به عضویت خبرنامه سایت ما در آمدید.'; //افزودن نوشته wp_insert_post( array( 'post_title' => wp_strip_all_tags( $name ), 'post_content' => $email, 'post_status' => 'publish', 'post_type' =>'newsletter' ); ); $status = wp_mail($email, 'پیام خوش آمد گویی', $text); header('Access-Control-Allow-Origin: *'); if($status) wp_send_json(array('message' => 'شما با موفقیت به عضویت خبرنامه سایت ما در آمدید.')); else wp_send_json(array('message' => 'متاسفانه مشکلی در عضویت شما در خرنامه پیش آمده است. لحظاتی بعد دوباره تلاش کنید.')); } البته کدها تست نشده بسیار مثال قشنگی زدید. البته بهتره که پست تایپ newsletter به صورت private باشه. function newsletter_post_type() { register_post_type( 'newsletter', array( 'labels' => array( 'name' => __( 'خبرنامه' ), 'singular_name' => __( 'خبرنامه' ) ), 'public' => false, 'rewrite' => false, ) ); } add_action( 'init', 'newsletter_post_type' ); ویرایش شده مرداد 96 توسط mehran-b 2 نقل قول لینک به ارسال
sajad 731 ارسال شده در مرداد 96 مالک گزارش بازنشر ارسال شده در مرداد 96 (ویرایش شده) @mehran-b عزیز مرسی من کد ها رو تست میکنم و نتیجه رو مشخص میکنم تا این تاپیک به نتیجه برسه. ویرایش شده مرداد 96 توسط m4xs051 نقل قول لینک به ارسال
sajad 731 ارسال شده در مرداد 96 مالک گزارش بازنشر ارسال شده در مرداد 96 @mehran-b این کد وقتی گذاشته میشه وردپرس داون میشه و اررور ۵۰۰ میده: add_action('wp_ajax_form', 'form'); add_action('wp_ajax_nopriv_form', 'form'); function form() { $name = $_REQUEST['name']; $email = $_REQUEST['email']; $text = $name . ' عزیز، شما با موفقیت به عضویت خبرنامه سایت ما در آمدید.'; //افزودن نوشته wp_insert_post( array( 'post_title' => wp_strip_all_tags( $name ), 'post_content' => $email, 'post_status' => 'publish', 'post_type' =>'newsletter' ); ); $status = wp_mail($email, 'پیام خوش آمد گویی', $text); header('Access-Control-Allow-Origin: *'); if($status) wp_send_json(array('message' => 'شما با موفقیت به عضویت خبرنامه سایت ما در آمدید.')); else wp_send_json(array('message' => 'متاسفانه مشکلی در عضویت شما در خرنامه پیش آمده است. لحظاتی بعد دوباره تلاش کنید.')); } نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 در ۱ ساعت قبل، m4xs051 گفته است : @mehran-b این کد وقتی گذاشته میشه وردپرس داون میشه و اررور ۵۰۰ میده: add_action('wp_ajax_form', 'form'); add_action('wp_ajax_nopriv_form', 'form'); function form() { $name = $_REQUEST['name']; $email = $_REQUEST['email']; $text = $name . ' عزیز، شما با موفقیت به عضویت خبرنامه سایت ما در آمدید.'; //افزودن نوشته wp_insert_post( array( 'post_title' => wp_strip_all_tags( $name ), 'post_content' => $email, 'post_status' => 'publish', 'post_type' =>'newsletter' ); ); $status = wp_mail($email, 'پیام خوش آمد گویی', $text); header('Access-Control-Allow-Origin: *'); if($status) wp_send_json(array('message' => 'شما با موفقیت به عضویت خبرنامه سایت ما در آمدید.')); else wp_send_json(array('message' => 'متاسفانه مشکلی در عضویت شما در خرنامه پیش آمده است. لحظاتی بعد دوباره تلاش کنید.')); } این درسته. add_action('wp_ajax_form', 'form'); add_action('wp_ajax_nopriv_form', 'form'); function form() { $name = $_REQUEST['name']; $email = $_REQUEST['email']; $text = $name . ' عزیز، شما با موفقیت به عضویت خبرنامه سایت ما در آمدید.'; //افزودن نوشته wp_insert_post( array( 'post_title' => wp_strip_all_tags( $name ), 'post_content' => $email, 'post_status' => 'publish', 'post_type' =>'newsletter' ) ); $status = wp_mail($email, 'پیام خوش آمد گویی', $text); header('Access-Control-Allow-Origin: *'); if($status) wp_send_json(array('message' => 'شما با موفقیت به عضویت خبرنامه سایت ما در آمدید.')); else wp_send_json(array('message' => 'متاسفانه مشکلی در عضویت شما در خرنامه پیش آمده است. لحظاتی بعد دوباره تلاش کنید.')); } نقل قول لینک به ارسال
sajad 731 ارسال شده در مرداد 96 مالک گزارش بازنشر ارسال شده در مرداد 96 @mehran-b آقا مهران این کد یه کوچولو مشکل داره: function newsletter_post_type() { register_post_type( 'newsletter', array( 'labels' => array( 'name' => __( 'خبرنامه' ), 'singular_name' => __( 'خبرنامه' ) ), 'public' => false, 'rewrite' => false, ) ); } add_action( 'init', 'newsletter_post_type' ); زمانیکه 'public' => false, هست پست تایپی رو تو پیشخوان نشون نمیده و باید حتما وضعیت اون به true تغییر پیدا کنه. این باعث میشه که بعد اگه یه کاربر به اون url مراجعه کرد نوشته ها رو ببینه درسته؟ نکته دوم 'rewrite' => false, این کد باید از ثبت اطلاعات تکراری جلوگیری کنه درسته؟ ولی اینطور نیست و مقادیر تکراری وارد میشه تو پست تایپ. نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 (ویرایش شده) در 25 دقیقه قبل، m4xs051 گفته است : @mehran-b آقا مهران این کد یه کوچولو مشکل داره: function newsletter_post_type() { register_post_type( 'newsletter', array( 'labels' => array( 'name' => __( 'خبرنامه' ), 'singular_name' => __( 'خبرنامه' ) ), 'public' => false, 'rewrite' => false, ) ); } add_action( 'init', 'newsletter_post_type' ); زمانیکه 'public' => false, هست پست تایپی رو تو پیشخوان نشون نمیده و باید حتما وضعیت اون به true تغییر پیدا کنه. این باعث میشه که بعد اگه یه کاربر به اون url مراجعه کرد نوشته ها رو ببینه درسته؟ نکته دوم 'rewrite' => false, این کد باید از ثبت اطلاعات تکراری جلوگیری کنه درسته؟ ولی اینطور نیست و مقادیر تکراری وارد میشه تو پست تایپ. پارامتر public با مقدار false به طور کلی دسترسی به پست تایپ رو چه از داشبورد و چه از بیرون داشبورد قطع میکنه. پارامتر rewrite با مقدار false هیچ آدرس بیرونی به پست تایپ اختصاص نمیده. در نتیجه با دو مورد بالا به طور کلی انگار این پست تایپ وجود نداره. حالا به خاطر اینکه شما توی محیط داشبورد وردپرس ببنید منوی ایجاد شده توسط پست تایپ رو کد زیر رو استفاده کنید: function newsletter_post_type() { register_post_type( 'newsletter', array( 'labels' => array( 'name' => __( 'خبرنامه' ), 'singular_name' => __( 'خبرنامه' ) ), 'public' => false, 'show_ui' => true, 'rewrite' => false, ) ); } add_action( 'init', 'newsletter_post_type' ); ویرایش شده مرداد 96 توسط mehran-b 1 نقل قول لینک به ارسال
sajad 731 ارسال شده در مرداد 96 مالک گزارش بازنشر ارسال شده در مرداد 96 در 50 دقیقه قبل، mehran-b گفته است : function newsletter_post_type() { register_post_type( 'newsletter', array( 'labels' => array( 'name' => __( 'خبرنامه' ), 'singular_name' => __( 'خبرنامه' ) ), 'public' => false, 'show_ui' => true, 'rewrite' => false, ) ); } add_action( 'init', 'newsletter_post_type' ); سپاس بحث تکراری وارد کردن داده ها رو نمیشه کاری کرد؟ نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 در 2 دقیقه قبل، m4xs051 گفته است : سپاس بحث تکراری وارد کردن داده ها رو نمیشه کاری کرد؟ چون آدرس ایمیل به جای متن پست ارسال شده توسط wp_insert_post قرار میگیره بررسی تکراری بودن یه ذره اینجا دشوار شده مگر اینکه بیایم برای این پست تایپ کلا موراد پیشفرض رو حذف کنیم و چند تا کاستوم فیلد براش تعریف بشه یه کاستوم فید نام و نام خانوادگی و کاستوم فیلد دیگر ایمیل. نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 در 21 دقیقه قبل، mehran-b گفته است : چون آدرس ایمیل به جای متن پست ارسال شده توسط wp_insert_post قرار میگیره بررسی تکراری بودن یه ذره اینجا دشوار شده مگر اینکه بیایم برای این پست تایپ کلا موراد پیشفرض رو حذف کنیم و چند تا کاستوم فیلد براش تعریف بشه یه کاستوم فید نام و نام خانوادگی و کاستوم فیلد دیگر ایمیل. خوب الان که بیشتر فکر کردم به این شکل میشه عمل کرد. add_action('wp_ajax_form', 'form'); add_action('wp_ajax_nopriv_form', 'form'); function form() { $name = $_REQUEST['name']; $email = $_REQUEST['email']; $query = new wp_query(array( 's' => $email, 'post_type' => 'newsletter', 'fields' => 'ids' )); header('Access-Control-Allow-Origin: *'); if($query->posts !== array()) wp_send_json(array('message' => 'شما قبلا عضو خبرنامه سایت شده اید.')); $text = $name . ' عزیز، شما با موفقیت به عضویت خبرنامه سایت ما در آمدید.'; //افزودن نوشته wp_insert_post( array( 'post_title' => wp_strip_all_tags( $name ), 'post_content' => $email, 'post_status' => 'publish', 'post_type' =>'newsletter' ) ); $status = wp_mail($email, 'پیام خوش آمد گویی', $text); if($status) wp_send_json(array('message' => 'شما با موفقیت به عضویت خبرنامه سایت ما در آمدید.')); else wp_send_json(array('message' => 'متاسفانه مشکلی در عضویت شما در خرنامه پیش آمده است. لحظاتی بعد دوباره تلاش کنید.')); } 1 نقل قول لینک به ارسال
sajad 731 ارسال شده در مرداد 96 مالک گزارش بازنشر ارسال شده در مرداد 96 در 21 دقیقه قبل، mehran-b گفته است : خوب الان که بیشتر فکر کردم به این شکل میشه عمل کرد. add_action('wp_ajax_form', 'form'); add_action('wp_ajax_nopriv_form', 'form'); function form() { $name = $_REQUEST['name']; $email = $_REQUEST['email']; $query = new wp_query(array( 's' => $email, 'post_type' => 'newsletter', 'fields' => 'ids' )); header('Access-Control-Allow-Origin: *'); if($query->posts !== array()) wp_send_json(array('message' => 'شما قبلا عضو خبرنامه سایت شده اید.')); $text = $name . ' عزیز، شما با موفقیت به عضویت خبرنامه سایت ما در آمدید.'; //افزودن نوشته wp_insert_post( array( 'post_title' => wp_strip_all_tags( $name ), 'post_content' => $email, 'post_status' => 'publish', 'post_type' =>'newsletter' ) ); $status = wp_mail($email, 'پیام خوش آمد گویی', $text); if($status) wp_send_json(array('message' => 'شما با موفقیت به عضویت خبرنامه سایت ما در آمدید.')); else wp_send_json(array('message' => 'متاسفانه مشکلی در عضویت شما در خرنامه پیش آمده است. لحظاتی بعد دوباره تلاش کنید.')); } اینجوری خیلی بهتره تست کردم تکراری دیگه نمیگیره خدا خیرت بده نقل قول لینک به ارسال
sajad 731 ارسال شده در مرداد 96 مالک گزارش بازنشر ارسال شده در مرداد 96 @mehran-b یه سوال در جهت تکمیل کردن این بخش: چطور میشه پیغام هایی که نشون داده میشه رو کاستومایز کرد؟ میشه از این کتابخونه استفاده کرد؟فایل کتاب خانه اگه میشه لطفا راهنمایی کنید که چطوری پیغام هایی که بصورت دیفالت هست رو با این کتابخونه سفارشی سازی کرد. نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 در 1 ساعت قبل، m4xs051 گفته است : @mehran-b یه سوال در جهت تکمیل کردن این بخش: چطور میشه پیغام هایی که نشون داده میشه رو کاستومایز کرد؟ میشه از این کتابخونه استفاده کرد؟فایل کتاب خانه اگه میشه لطفا راهنمایی کنید که چطوری پیغام هایی که بصورت دیفالت هست رو با این کتابخونه سفارشی سازی کرد. بله میشه با این کتابخونه ای که معرفی کردید alert ها رو سفارشی کرد. برای نمونه سادش باید کد های FrontEnd رو به صورت زیر بکنید. <html lang="fa-IR" dir="rtl"> <head> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/6.6.9/sweetalert2.min.css" /> <script src="https://code.jquery.com/jquery-3.2.1.min.js" ></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.form/4.2.2/jquery.form.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/6.6.9/sweetalert2.min.js"></script> <script> $(document).ready(function() { $('#jsonForm').ajaxForm({ dataType: 'json', success: processJson }); }); function processJson(data) { swal({ title: 'پیام', text: data.message, type: 'info', confirmButtonText: 'بسیار خوب' }); } </script> </head> <body> <form id="jsonForm" action="http://your-domain.com/wp-admin/admin-ajax.php" method="post"> <input type="hidden" name="action" value="form"> نام و نام خانوادگی: <input type="text" name="name" required> ایمیل: <input type="email" name="email" required> <input type="submit" value="ارسال فرم"> </form> </body> </html> 2 نقل قول لینک به ارسال
sajad 731 ارسال شده در شهریور 96 مالک گزارش بازنشر ارسال شده در شهریور 96 آقا @mehran-b سلام یه سوال: چطور میشه ایمیلی که به کاربر ارسال میشه توسط این کد $text = $name . ' عزیز، شما با موفقیت به عضویت خبرنامه سایت ما در آمدید.'; رو براش تمپلت تعریف کرد؟ یا مثلا یه صفحه html براش درست کرد و به این کد اضافه کرد و هر زمان که بخواد ایمیلی ارسال کنه اسم کاربر رو به فایل تمپلت ادد کنه و ایمیل رو ارسال کنه؟ نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .