m4xs051

ایجاد فرم عضویت در خبرنامه

47 پست در این موضوع قرار دارد

سلام دوستان

چطور میشه یه فرم 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>

 

ممنون

0

به اشتراک گذاری این پست


لینک به پست

میشه ار ajax برای ارسال اطلاعات داده شده در فرم به یک ایمیلی استفاده کنید.

0

به اشتراک گذاری این پست


لینک به پست
در 7 دقیقه قبل، mehran-b گفته است :

میشه ار ajax برای ارسال اطلاعات داده شده در فرم به یک ایمیلی استفاده کنید.

ممنون مهران جان

این مورد رو میدونم که میشه با استفاده از php و یا ajax و یا به روش های دیگه داده های ورودی رو به یه ایمیلی ارسال کرد. اما دنبال راهکار و نحوه انجام اون هستم نه چیز دیگر.

0

به اشتراک گذاری این پست


لینک به پست

ارسال شده در (ویرایش شده)

در ۱ ساعت قبل، 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 در وردپرس بود. اگر از روی آموزش نتونستید ارسال ایمیل به همین روش رو پیاده کنید بگید که راجع به اونم یه چیزایی بهتون بگم.

ویرایش شده در توسط mehran-b
2

به اشتراک گذاری این پست


لینک به پست
در 3 ساعت قبل، mehran-b گفته است :

پ.ن: آموزشی که ارسال شد صرفا یک آموزش جهت استفاده از AJAX در وردپرس بود. اگر از روی آموزش نتونستید ارسال ایمیل به همین روش رو پیاده کنید بگید که راجع به اونم یه چیزایی بهتون بگم.

 

ممنون دوست عزیز

تو این زمینه بخصوص در مورد ajax اطلاعات زیادی ندارم که به چه صورت کار میکنه. اگه امکان داره یه آموزش تو همین تاپیک داشته باشید که هر زمان که فرد دیگری هم قصد ساهت فرم داشت بتونه از آموزش شما استفاده لازم رو ببره.

باتشکر

 

0

به اشتراک گذاری این پست


لینک به پست
در 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 میکنه.

2

به اشتراک گذاری این پست


لینک به پست

سلام

ضمن تشکر از @mehran-b بابت کدی که آماده کرد. دو مورد پیشنهاد هم دارم.

1- برای اکشن فرم بهتره که به آدرس مستقیم وردپرس اشاره نشه و بجاش یک فایل اسکریپت ایجاد بشه و اون enqueue بشه تا آدرس رو خود وردپرس ایجاد و به ایجاکس الحاق کنه.

2- برای ذخیره سازی اطلاعات تماس میشه مقادیر رو ایمیل نکرد و بجای با wp_insert_post اونها رو به یک پست تایپ(که از قبل مثلا ساختیم) ارسال و ذخیره کرد.

ممنون از بچه ها که بحث های فنی رو توی انجمن ایجاد دنبال میکنن :)

2

به اشتراک گذاری این پست


لینک به پست

@mehran-b عزیز ممنون بابت آموزش. اگه مشکلی باشه مجدد همین جا مطرح میکنم تا تاپیک کامل تر بشه.

اما یه نکته: این فرم الان قابلیت ذخیره نام و آدرس ایمیل رو نداره تو بخشی از سایت درسته؟ برای اینکار چطور میشه طبق پیشنهادی که @Morteza عزیز و بزرگوار داد رفت جلو و مثلا اطلاعات که شامل نام و آدرس ایمیل هست رو تو یه پست تایپ که از قبل ساخته شده مثلا newsletter  ثبت کرد.؟ 

0

به اشتراک گذاری این پست


لینک به پست
در 49 دقیقه قبل، Morteza گفته است :

1- برای اکشن فرم بهتره که به آدرس مستقیم وردپرس اشاره نشه و بجاش یک فایل اسکریپت ایجاد بشه و اون enqueue بشه تا آدرس رو خود وردپرس ایجاد و به ایجاکس الحاق کنه.

===> مزیت این روش چیه آقا @Morteza ؟ ابتدایی تر میتونید توضیح بدین؟ من اطلاعات زیادی در این مورد ندارم. 
مرسی...

 

0

به اشتراک گذاری این پست


لینک به پست

مثلا بصورت ساده یک پست تایپ ایجاد می کنیم:

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' => 'متاسفانه مشکلی در عضویت شما در خرنامه پیش آمده است. لحظاتی بعد دوباره تلاش کنید.'));
}

 

البته کدها تست نشده :)

1

به اشتراک گذاری این پست


لینک به پست
در 35 دقیقه قبل، m4xs051 گفته است :
در ۱ ساعت قبل، Morteza گفته است :

1- برای اکشن فرم بهتره که به آدرس مستقیم وردپرس اشاره نشه و بجاش یک فایل اسکریپت ایجاد بشه و اون enqueue بشه تا آدرس رو خود وردپرس ایجاد و به ایجاکس الحاق کنه.

===> مزیت این روش چیه آقا @Morteza ؟ ابتدایی تر میتونید توضیح بدین؟ من اطلاعات زیادی در این مورد ندارم. 
مرسی...

 

بیشتر بحث امنیت هست. تا کاربر مستقیم به آدرس ها دسترسی نداشته باشه.

1

به اشتراک گذاری این پست


لینک به پست

ارسال شده در (ویرایش شده)

در 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' );

 

ویرایش شده در توسط mehran-b
2

به اشتراک گذاری این پست


لینک به پست

ارسال شده در (ویرایش شده)

@mehran-b عزیز مرسی

 

من کد ها رو تست میکنم و نتیجه رو مشخص میکنم تا این تاپیک به نتیجه برسه.

 

ویرایش شده در توسط m4xs051
0

به اشتراک گذاری این پست


لینک به پست

@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' => 'متاسفانه مشکلی در عضویت شما در خرنامه پیش آمده است. لحظاتی بعد دوباره تلاش کنید.'));
}

 

0

به اشتراک گذاری این پست


لینک به پست
در ۱ ساعت قبل، 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' => 'متاسفانه مشکلی در عضویت شما در خرنامه پیش آمده است. لحظاتی بعد دوباره تلاش کنید.'));
}

 

0

به اشتراک گذاری این پست


لینک به پست

@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, این کد باید از ثبت اطلاعات تکراری جلوگیری کنه درسته؟ ولی اینطور نیست و مقادیر تکراری وارد میشه تو پست تایپ.

 

 

0

به اشتراک گذاری این پست


لینک به پست

ارسال شده در (ویرایش شده)

در 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' );

 

ویرایش شده در توسط mehran-b
1

به اشتراک گذاری این پست


لینک به پست
در 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' );

 

سپاس ;)

 

بحث تکراری وارد کردن داده ها رو نمیشه کاری کرد؟

0

به اشتراک گذاری این پست


لینک به پست
در 2 دقیقه قبل، m4xs051 گفته است :

سپاس ;)

 

بحث تکراری وارد کردن داده ها رو نمیشه کاری کرد؟

چون آدرس ایمیل به جای متن پست ارسال شده توسط wp_insert_post قرار میگیره  بررسی تکراری بودن یه ذره اینجا دشوار شده مگر اینکه بیایم برای این پست تایپ کلا موراد پیشفرض رو حذف کنیم و چند تا کاستوم فیلد براش تعریف بشه یه کاستوم فید نام و نام خانوادگی و کاستوم فیلد دیگر ایمیل.

0

به اشتراک گذاری این پست


لینک به پست
در 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

به اشتراک گذاری این پست


لینک به پست
در 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' => 'متاسفانه مشکلی در عضویت شما در خرنامه پیش آمده است. لحظاتی بعد دوباره تلاش کنید.'));
}

 

اینجوری خیلی بهتره تست کردم تکراری دیگه نمیگیره;)

خدا خیرت بده

0

به اشتراک گذاری این پست


لینک به پست

@mehran-b  یه سوال در جهت تکمیل کردن این بخش:

چطور میشه پیغام هایی که نشون داده میشه رو کاستومایز کرد؟ میشه از این کتابخونه استفاده کرد؟
فایل کتاب خانه

اگه میشه لطفا راهنمایی کنید که چطوری پیغام هایی که بصورت دیفالت هست رو با این کتابخونه سفارشی سازی کرد.

 

:unsure:

 

0

به اشتراک گذاری این پست


لینک به پست
در 1 ساعت قبل، m4xs051 گفته است :

@mehran-b  یه سوال در جهت تکمیل کردن این بخش:

چطور میشه پیغام هایی که نشون داده میشه رو کاستومایز کرد؟ میشه از این کتابخونه استفاده کرد؟
فایل کتاب خانه

اگه میشه لطفا راهنمایی کنید که چطوری پیغام هایی که بصورت دیفالت هست رو با این کتابخونه سفارشی سازی کرد.

 

:unsure:

 

بله میشه با این کتابخونه ای که معرفی کردید 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>

 

1

به اشتراک گذاری این پست


لینک به پست

آقا @mehran-b سلام

یه سوال: چطور میشه ایمیلی که به کاربر ارسال میشه توسط این کد

$text = $name . ' عزیز، شما با موفقیت به عضویت خبرنامه سایت ما در آمدید.';

رو براش تمپلت تعریف کرد؟ یا مثلا یه صفحه html براش درست کرد و به این کد اضافه کرد و هر زمان که بخواد ایمیلی ارسال کنه اسم کاربر رو به فایل تمپلت ادد کنه و ایمیل رو ارسال کنه؟

 

0

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری