رفتن به مطلب

ساخت فیلتر مرتب سازی ایجکسی برای پست تایپ خاص


پست های پیشنهاد شده

سلام و  درود دوستان عزیز..

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

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

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

نحوه ساخت حلقه برای نمایش مطالب موجود در term های اون پست تایپ خاص رو پرسیدم و به لطف عزیزانی که پاسخ دادن این مورد رو ساختم.(با تشکر از عزیزان)

این پست تایپ که با نام book هست که 2 مورد taxanomy داره.

وقتی پستی در پست تایپ book منتشر میشه یک taxonomy با نام new داره و یک taxonomy با نام old و هر کدوم از این taxonomy ها term ها مختص به خودشون دارن که موقع انتشار تیک term  مربوط به اون مطلب انتخاب میشه.

تو صفحه ای که دارم حلقه این مطالب رو نمایش میدم نیاز به یک فیلتر نمایش دارم تا این موارد رو مرتب سازی کنم. در این فیلتر فقط از taxonomy با نام old استفاده میشه. میخوام term های موجود در این taxonomy رو تو این فیلتر بذارم تا وقتی روی هر کدوم از اینا کلیک بشه فقط مطالب اون term که روش کلیک شده بصورت ایجکس نمایش داده بشه.

امیدوارم بتونم نحوه ساخت چنین فیلتری رو اینجا یاد بگیرم.

در نهایت فکر میکنم آموزش جامع و خوبی بشه.

تشکر.

 

 

 

لینک به ارسال

با سلام

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

نکته ۱ :‌ مواردی که لینک شده که میتونید به داکیومنت تابع دسترسی داشته باشید و خروجی که میخواید را از تابع بگیرید

نکته ۲ :‌ کد ها مرحله به مرحله کامل میشه و در اخر کد کامل را میزارم 

اول از همه با تابع ()get_terms ترم های اون taxonomy را دریافت میکنید و نمایش میدید نمونه کد زیر

<?php
$terms = get_terms( 'book' );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
    echo '<ul>';
    foreach ( $terms as $term ) {
      echo '<li><label for="radio'.$term->term_id.'"><input type="radio" name="filterbook" id="radio'.$term->term_id.'" value="'.$term->term_id.'">'.$term->name.'</label></li>';
    }
    echo '</ul>';
}
?>

شما میتونید یک ایتم هیچکدام هم بزارید که کاربر خواست فیلتر را برگردونه بتونه

<?php
$terms = get_terms( 'book' );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
    echo '<ul>';
    echo '<li><label for="radionull"><input type="radio" name="filterbook" id="radionull" value="null">هیچکدام</label></li>';
    foreach ( $terms as $term ) {
      echo '<li><label for="radio'.$term->term_id.'"><input type="radio" name="filterbook" id="radio'.$term->term_id.'" value="'.$term->term_id.'">'.$term->name.'</label></li>';
    }
    echo '</ul>';
}
?>

نکته اگه هیچ چیزی نمایش نمیده داکیومنت تابع را بخونید و hide_empty را false کنید تا ترم هایی که هیچ مطلبی با اون ها منتشر نشده هم نمایش داده بشه

<?php
$terms = get_terms( 'book', array(
    'hide_empty' => false,
));
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
    echo '<ul>';
    echo '<li><label for="radionull"><input type="radio" name="filterbook" id="radionull" value="null">هیچکدام</label></li>';
    foreach ( $terms as $term ) {
      echo '<li><label for="radio'.$term->term_id.'"><input type="radio" name="filterbook" id="radio'.$term->term_id.'" value="'.$term->term_id.'">'.$term->name.'</label></li>';
    }
    echo '</ul>';
}
?>

تا اینجا میتونید ایتم های فیلتر را نمایش بدید

اگه مشکلی نیست تا اینجای کار ادامه اموزش را ارسال کنم اگه سوالی هم دارید بپرسید

ویرایش شده توسط mehdi...
لینک به ارسال
در 1 ساعت قبل، mehdi... گفته است :

 

سلام. تشکر

از کدها استفاده کردم ولی هیچ آیتمی نمایش داده نمیشه.

این قسمت از کد که get_terms رو  book  قرار دادید درواقع منظور همون پست تایپه درسته؟؟

نمیدونم چرا هیچ چیزی نمایش نمیده.

ویرایش شده توسط maraljoon
لینک به ارسال
در 1 دقیقه قبل، maraljoon گفته است :

سلام. تشکر

از کدها استفاده کردم ولی هیچ آیتمی نمایش داده نمیشه.

این قسمت از کد که get_terms رو  book  قرار دادید درواقع منظور همون پست تایپه درسته؟؟

نمیدونم چرا هیچ چیزی نمایش نمیده.

خیر اسم اون taxonomy هست شما فکر کنم باید old یا new که گفتید درست کردید قرار بدید

 

لینک به ارسال
در 3 دقیقه قبل، mehdi... گفته است :

خیر اسم اون taxonomy هست شما فکر کنم باید old یا new که گفتید درست کردید قرار بدید

 

ممنونم. تا اینجا درسته. الان داره آیتم های موجود رو نمایش میده

لینک به ارسال

در مرحله بعدی باید اجکس بزنید و اون مقدار انتخاب شده را ارسال کنید و در مرحله بعدی خروجی را بگیرید و نمایش بدید

من این ریکوئست را به صفحه سرچ میزنم که ساده تره و شما بهتر میتونید یاد بگیرید بعد خودتون میتونید به ajax-admin بزنید و تو فانکشن خروجی را بسازید

<script>
  $(document).ready(function(){
    $('input[name="radiofilter"]').change(function(){
      $.ajax({
        type : "GET",
        url : "http://siteurl.com/",
        data : {
          s : '',
          do : 'filterOld',
          termid : $(this).val()
        },
        beforeSend : function() {
          $(".loading").fadeIn(); // show loading
        },
        success : function(response) {
          $('#result').html(response); // change result
          $(".loading").fadeOut(); // hide loading
        }
      });
    });
  });
</script>

این کد جیکوئری را قرار میدیم تو فایل جاوا اسکریپتمون یا فوتر سایت یا هرجا که میدونید بهتره

ادرس سایت را با siteurl.com جایگزین میکنید

در ادامه data هایی که ارسال کردیم اولی  s هست که باعث میشه که ریکوئست به صفحه سرچ وردپرس ارسال بشه

دومی کاری کا قراره انجام بشه را ارسال میکنیم

و سومی ای دی اون دسته که قرار فیلتر بشه را ارسال میکنیم

اگه تو وصل کردن کد به input ها مشکل داشتید یه مثال درست کردم تو این لینک میتونید تست کنید و تو کنسول مشکلتون را حل کنید

لینک مثال

در ادامه شما تو beforesend میتونید لویدنگ را فعال کنید و در success اون غیرفعال کنید

و یک المنت به اسم result حالا هرچیزی که در صفحه دارید میتونید اسمش را قرار بدید و نتیجه را داخل اون div  یا ... بریزید

معمولا همون سکشن که همه پست ها توش قرار دارند را میزاریم چون قراره مطالب قبلی دیگه نمایش داده نشه و مطالب فیلتر شده جدید نمایش داده بشه

اگه این مرحله هم انجام دادید و اوکی بود مرحله اخر هم بگم 

موفق باشید

لینک به ارسال
در 43 دقیقه قبل، mehdi... گفته است :

 

ممنون از شما.

یه مقدار برام گنگ بود. با بعضی از اصطلاحات هنوز کار نکردم.

کدهای مربوط به ایجکس رو نتونستم جواب بگیرم.

مثلا توی اون کد نفهمیدم چطور نتیجه فیلتر رو بجای صفحه سرچ  به صفحه ای که توش مطالب رو نمایش میدم هدایت کنم.

نمیشه نتایج تو همین صفحه ای که دارم مطلب رو نمایش میدم فیلتر بشه؟

نمیدونم ایجکس اینقدر سخته یا اینکه من آی کیوم پایینه:D

و یه مورد دیگه در مورد taxonomy ها. تا اونجای که اون آیتم هارو نمایش دادیم درست بود. میخوام term موجود در taxonomy رو نمایش بدم. در واقع اون رادیو باکس ها باید term های اون taxonomy خاص باشن.

لینک به ارسال
در 5 ساعت قبل، maraljoon گفته است :

ممنون از شما.

یه مقدار برام گنگ بود. با بعضی از اصطلاحات هنوز کار نکردم.

کدهای مربوط به ایجکس رو نتونستم جواب بگیرم.

مثلا توی اون کد نفهمیدم چطور نتیجه فیلتر رو بجای صفحه سرچ  به صفحه ای که توش مطالب رو نمایش میدم هدایت کنم.

نمیشه نتایج تو همین صفحه ای که دارم مطلب رو نمایش میدم فیلتر بشه؟

نمیدونم ایجکس اینقدر سخته یا اینکه من آی کیوم پایینه:D

و یه مورد دیگه در مورد taxonomy ها. تا اونجای که اون آیتم هارو نمایش دادیم درست بود. میخوام term موجود در taxonomy رو نمایش بدم. در واقع اون رادیو باکس ها باید term های اون taxonomy خاص باشن.

در مورد taxonomy کدی که گذاشتیم term ها اون taxonomy را نمایش میده

منظورتون از ترم های موجود چیه ؟

توضیح کلی کد بالا اینه‌:

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

تو ایجکس درخواست ارسال میشه بدونه این که صفحه رفرش بشه یعنی تو همون صفحه نتیجه را نشون میدیم

خوب حالا ما درخواست یا ریکوئست را به صفحه سرچ میفرستیم تو مرحله بعد صفحه سرچ را اموزش میدم که چطور درخواست که میاد سمتش بفهمه چیه و نتیجه را چاپ کنه و شما اون نتیجه را تو صفحه قرار بدید

پس تا الان ما درخواست میدیم به صفحه سرچ و اون نتیجه را میده بمون

اول این که چطور وردپرس بفهمه درخواست ما به صفحه سرچ هست ما تو data مقدار s  را میفرستیم چه خالی چه با هر مقداری به صفحه سرچ منتقل میشه این درخواست

در ادامه تو درخواستمون با مقدار دادن به do تو data میگیم چه درخواستی را داریم که مقدارش را برابر filterOld قرار دادم میتونه هر اسم دیگه ای داشته باشه که بعد تو اموزش بعدی میگم به چه دردی میخوره

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

قبلا ای دی ترم را تو value اون radio قرار دادیم حالا فقط ارسال میکنیم مقدارشو

و این که کد جکوئی که نوشتیم input radio هایی که type مساوی با radiofilter هست را وقتی تغییر کردند دستوره مارا اجرا میکنه یعنی تو متود change شون این عملیات انجام میشه

<script>
  $(document).ready(function(){
    $('input[name="radiofilter"]').change(function(){ // وقتی اینپت هایی که ساختیم تغییر میکنند منظور از تغییر کلیک شدن روشون هست
      $.ajax({ // درخواست ایجاد میشه
        type : "GET", // نوع درخواست
        url : "http://siteurl.com/", // ادرس درخواست
        data : { // اطلاعات درخواست
          s : '', // برای رفتن تو صفحه سرچ
          do : 'filterOld', // کاری که باید انجام بشه ممکنه بعد بخواید چند تا فیلتر داشته باشید
          termid : $(this).val() // مقدار اون اینپت که کلیک شده روش ارسال میشه که نتیجه را نصبت به این مقدار قراره برگردونیم
        },
        beforeSend : function() {
          $(".loading").fadeIn(); // قبل ارسال لودینگ را نمایش میدیم
        },
        success : function(response) { // درخواست ارسال شده و نتیجه دریافت شده و در متفیر response اون را داریم
          $('#result').html(response); // در اون لایه که نتیجه را باید نمایش بدیم چاپ میکنیم
          $(".loading").fadeOut(); // لودینگ را مخفی می کنیم
        }
      });
    });
  });
</script>
 
ویرایش شده توسط mehdi...
لینک به ارسال
در 7 ساعت قبل، mehdi... گفته است :

در مورد taxonomy کدی که گذاشتیم term ها اون taxonomy را نمایش میده

منظورتون از ترم های موجود چیه ؟



 

پوزش. یه اشتباهی تو ان مورد کرده بودم که حل شد.

در مورد ایجکس هنوز برای من اتفاقی نمیفته وقتی هرکدوم از رادیو باکس ها انتخاب میشن یا باصطلاح change میشن. هیچ اتفاقی تو صفحه نمیفته.

 

لینک به ارسال
در در 11/22/2017 at 09:09، maraljoon گفته است :

 

در مورد ایجکس هنوز برای من اتفاقی نمیفته وقتی هرکدوم از رادیو باکس ها انتخاب میشن یا باصطلاح change میشن. هیچ اتفاقی تو صفحه نمیفته.

 

اساتید ممنون میشم در صورت امکان این مورد رو آموزش بدید.

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

لینک به ارسال
در 38 دقیقه قبل، maraljoon گفته است :

اساتید ممنون میشم در صورت امکان این مورد رو آموزش بدید.

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

 

در در 11/22/2017 at 09:09، maraljoon گفته است :

پوزش. یه اشتباهی تو ان مورد کرده بودم که حل شد.

در مورد ایجکس هنوز برای من اتفاقی نمیفته وقتی هرکدوم از رادیو باکس ها انتخاب میشن یا باصطلاح change میشن. هیچ اتفاقی تو صفحه نمیفته.

 

قرار نیست چیزی ایجکس فعلا براتون کاره خاصی بکنه من بخش سوم اموزش را میگم

این ۳ بخش با هم بتون اون خروجی ای که میخواید را میده

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

لینک به ارسال
در 10 دقیقه قبل، mehdi... گفته است :

 

قرار نیست چیزی ایجکس فعلا براتون کاره خاصی بکنه من بخش سوم اموزش را میگم

این ۳ بخش با هم بتون اون خروجی ای که میخواید را میده

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

عالیه.

تشکر

لینک به ارسال

تا اینجای کار ما دکمه های انتخابی فیلتر را درست کردم

و با ایجکس مقدرا اون دکمه ها را وقتی کلیک میشدن ارسال کردیم به صفحه سرچ خوب حالا باید تو صفحه سرچ باید اون مطالبی را نشون بدیم که اون رادیو باتن ها کلیک شدن

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

اول تو صفحه سرچ یع تغییر کلی میدیم

به این صورت

<?php
if(isset($_GET['do']) && $_GET['do'] == 'filterOld'){
	$termid = $_GET['termid'];
	$myposts = new WP_Query( array(
		'showposts' => 0,
		'post_type' => 'book',
		'tax_query' => array(
			array(
				'taxonomy' => 'old',
				'field' => 'term_id',
				'terms' => $termid
			)
		)
	) );
	while ( $myposts->have_posts() ) {
		$myposts->the_post(); ?>
		<!-- code while post hara inja mizarim -->
	 <?php
	}
	wp_reset_postdata();
}else{ ?>
<!-- کد های فعلی صفحه سرچ را اینجا میزاریم -->
<?php } ?>

توضیح کد بالا :

مقدار do را میگیریم و اگه مساوی با filterOld بود میگیم این کد که نوشتیم اجرا بشه اگه نبود همون کد هایی که تو صفحه سرچ هست اجرا بشه

دقت کنید که filterOld همون مقداری هست که داریم با ایجکس میفرستیم

در مرحله بعد مقدار termid که داریم تو ایجکس میفرستیم را میگیریم و بعد همه پست هایی که اون termid را دارند و تو تکسونومی old هست را میگیم چاپ کنه

دقت کنید اونجا که نوشتم

code while post

همون کدی که برای نمایش پست تو حلقه صفحه ارشیو گذاشتید را باید قرار بدید

کارمون دیگه تمومه الان درخواست یا ایجکس زده میشه و پست هایی که اون term را دارند پاسخ داده میشه به ایجکس

نکته :‌ این ساده ترین حالت هست

شما میتونید جیسون اطلاعات را بفرستید و نمایش بدید یا میتونید این ایجکس را به صفحه فانکشن بفرستید بجای سرچ و ... من سعی کردم این روش را بگم که درکش راحت تره

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

ویرایش شده توسط mehdi...
لینک به ارسال
در در 11/28/2017 at 23:48، mehdi... گفته است :

 

سلام.

تشکر.

من تو یه بخشی از کار مشکل دارم. میخوام این نتایج به صفحه سرچ نره. چطور میشه بجای سرچ از یک صفحه دلخواه استفاده کرد؟

لینک به ارسال

سلام و درود

 

با تشکر از توضیحات استاد عزیزم جناب @mehdi... خان

نقل قول

میخوام این نتایج به صفحه سرچ نره. چطور میشه بجای سرچ از یک صفحه دلخواه استفاده کرد؟

در مورد این سوال ابتدا شما مثلا توی فایل های قالبتون یه فایل بسازید به اسم ideal.php بعد داخلش کدهایی که داخل فایل search.php گذاشته بودید بذارید یعنی این کدها:

<?php

$termid = (int) $_GET['termid'];
$myposts = new WP_Query( array(
  'posts_per_page' => 10,
  'post_status' => 'publish',
  'ignore_sticky_posts' => 1,
  'post_type' => 'book',
  'tax_query' => array(
    array(
      'taxonomy' => 'old',
      'field' => 'term_id',
      'terms' => $termid
    )
  )
) );
while ( $myposts->have_posts() ) {
  $myposts->the_post(); ?>
<!-- code while post hara inja mizarim -->
<?php
}
wp_reset_postdata();

بعد کد جاوا اسکریپت مربوط به AJAX هم باید ازش پارامتر s رو حذف کنید:

<script>
  $(document).ready(function(){
    $('input[name="radiofilter"]').change(function(){
      $.ajax({
        type : "GET",
        url : "<?php echo home_url('/'); ?>",
        data : {
          do : 'filterOld',
          termid : $(this).val()
        },
        beforeSend : function() {
          $(".loading").fadeIn(); // show loading
        },
        success : function(response) {
          $('#result').html(response); // change result
          $(".loading").fadeOut(); // hide loading
        }
      });
    });
  });
</script>

سپس کد زیر رو در فایل functions.php قالبتون باید قرار بدید:

add_action('template_redirect', function() {
    if(isset($_GET['do']) && $_GET['do'] == "filterOld") {
		add_filter('template_include', function() {
            return get_template_directory() . '/ideal.php';
        });
    }
});

خوب با موارد بالا منبعد AJAX اطلاعات رو به جای فایل search.php به فایل ideal.php ارسال میکند و پاسخ را از این صفحه دریافت میکند.

 

پ.ن : البته همون طور که @mehdi... خان هم اشاره کردن استاندارد AJAX در وردپرس استفاده از admin-ajax.php هست.

 

موفق باشید

لینک به ارسال

سلام و درود.

<?php

$termid = (int) $_GET['termid'];
$myposts = new WP_Query( array(
  'posts_per_page' => 10,
  'post_status' => 'publish',
  'ignore_sticky_posts' => 1,
  'post_type' => 'book',
  'tax_query' => array(
    array(
      'taxonomy' => 'old',
      'field' => 'term_id',
      'terms' => $termid
    )
  )
) );
while ( $myposts->have_posts() ) {
  $myposts->the_post(); ?>
<!-- code while post hara inja mizarim -->
<?php
}
wp_reset_postdata();

توی کد بالا به این تیکه کد

if(isset($_GET['do']) && $_GET['do'] == 'filterOld'){

دیگه نیاز نیست. درسته؟؟

سوال بعدی اینکه این بخش: <!-- code while post hara inja mizarim --> که گفتن کد while رو بذارم اینجا که خودش while داره. چیو بذارم دقیقا؟

 

 

 

در 18 دقیقه قبل، mehran-b گفته است :

 

 

خوب با موارد بالا منبعد AJAX اطلاعات رو به جای فایل search.php به فایل ideal.php ارسال میکند و پاسخ را از این صفحه دریافت میکند.

 

یه چیزی برام گیج کنندس. اینکه تو وقتی تو صفحه ای که حلقه تعریف شده و رادیوباکس ها رو داریم، با انتخاب رادیو باکس ها اطلاعات به ideal.php ارسال میشه. یعنی بعد از ارسال اطلاعات دیگه تو صفحه قبلی نیستیم؟

یا اینکه نه. نتایج مربوط به ideal.php در اون صفحه نمایش داده میشه؟

لینک به ارسال

درود مجدد

 

نقل قول

دیگه نیاز نیست. درسته؟؟

خیر داخل اکشن ازش استفاده کردم توی صفحه دیگه نیاز نیست.

نقل قول

سوال بعدی اینکه این بخش: <!-- code while post hara inja mizarim --> که گفتن کد while رو بذارم اینجا که خودش while داره. چیو بذارم دقیقا؟

اینجا باید HTML ای رو بسازید که قراره توسط AJAX گرفته بشه از صفحه ideal.php و افزوده بشه به صفحه ای که توش اون ترم ها هستند.

نقل قول

یه چیزی برام گیج کنندس. اینکه تو وقتی تو صفحه ای که حلقه تعریف شده و رادیوباکس ها رو داریم، با انتخاب رادیو باکس ها اطلاعات به ideal.php ارسال میشه. یعنی بعد از ارسال اطلاعات دیگه تو صفحه قبلی نیستیم؟

یا اینکه نه. نتایج مربوط به ideal.php در اون صفحه نمایش داده میشه؟

چرا توی صفحه قبلی هستیم ولی توسط AJAX یه درخواست بنا بر شرایط انتخاب شده در دکمه های رادیویی به صفحه ideal.php ارسال میشه و AJAX دیتای HTML ای رو که از ideal.php میگیره (که داخل حلقه همون زیر while) باید بذاریدش میاد اضافه میکنه به صفحه جاری که توش دکمه های رادیویی هست.

 

موفق باشید

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

 

مواردی که فرمودین رو انجام دادم.

الان با انتخاب رادیوباکس ها چه اتفاقی باید بیفته؟؟

رادیوباکس هارو که انتخاب میکنم هیچ اتفاقی نمیفته

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

امکانش هست از ابتدای کار یعنی از ساخت حلقه و نمایش مطالب بهمراه اون رادیوباکس ها و ایجکس شدنشون برام به ترتیب بنویسید؟

لینک به ارسال

درود مجدد

 

شما وقتی دکمه های رادیویی رو قرار میدید زیر شیه حلقه میذارید که توی اون حلقه همه پست ها بدون فیلتر قرار داره بعد پست های این حلقه باید توی یه دایوی باشن با یه کلاس یا آیدی خاص که در که در کد زیر:

<script>
  $(document).ready(function(){
    $('input[name="radiofilter"]').change(function(){
      $.ajax({
        type : "GET",
        url : "<?php echo home_url('/'); ?>",
        data : {
          do : 'filterOld',
          termid : $(this).val()
        },
        beforeSend : function() {
          $(".loading").fadeIn(); // show loading
        },
        success : function(response) {
          $('#result').html(response); // change result
          $(".loading").fadeOut(); // hide loading
        }
      });
    });
  });
</script>

باید توی دایوی با آیدی result باشن حال هر وقت دکمه های رادیویی عوض میشن چه اتفاقی میوفته مشخصات اون دکمه شامل آیدی اون ترم با AJAX ارسال میشه به صفحه ideal.php و سپس اگر مثلا ideal.php ای اینطوری باشه حلقش:

<?php

$termid = (int) $_GET['termid'];
$myposts = new WP_Query( array(
  'posts_per_page' => 10,
  'post_status' => 'publish',
  'ignore_sticky_posts' => 1,
  'post_type' => 'book',
  'tax_query' => array(
    array(
      'taxonomy' => 'old',
      'field' => 'term_id',
      'terms' => $termid
    )
  )
) );
while ( $myposts->have_posts() ) {
  $myposts->the_post();
	the_title();
}
wp_reset_postdata();

یعنی فقط عنوان پست های اون ترم انتخاب شده در حلقه باشه AJAX همین عنوان ها رو میگیره و میاد توی اون باکسی که همه پست ها بود که آیدیش result بود جایگزین میکنه.

امیدوارم فرآیند کار رو فهمیده باشید.

 

پ.ن: عذر میخوام دیر پاسخ میدم.

 

موفق باشید

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

 

سلام..

ممنونم بخاطر وقتی که میذارید.

متوجه فرایند کار شدم. این موارد رو هم انجام دادم. ولی نمیدونم چرا هیچ اتفاقی با انتخاب کردن رادیوباکس ها نمیفته.. هنوز تسلط کافی برای کار با ایجکس ندارم.

آیا برای اینکه ایجکس عمل کنه نیاز هست که فایل جی کوئری یا کتابخانه  خاصی لود بشه؟

لینک به ارسال

درود مجدد

 

نقل قول

آیا برای اینکه ایجکس عمل کنه نیاز هست که فایل جی کوئری یا کتابخانه  خاصی لود بشه؟

بله کدی که برای AJAX جناب @mehdi... دادن به کتابخانه JQuery وابستگی دارد.

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

 

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

بنظرتون مشکل چی میتونه باشه که هیچ اتفاقی بعد از چنج شدن رادیو باکس ها اتفاق نمیفته؟

لینک به ارسال
نقل قول

بنظرتون مشکل چی میتونه باشه که هیچ اتفاقی بعد از چنج شدن رادیو باکس ها اتفاق نمیفته؟

توی کنسول مرورگر کروم بالای پنجره کنسول سمت راست یه ضربدر قرمر ندارید؟

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

توی کنسول مرورگر کروم بالای پنجره کنسول سمت راست یه ضربدر قرمر ندارید؟

نه خوشبختانه. احتمال میدادم خطایی باشه برای همین چک کردم ولی چیزی نبود

لینک به ارسال
در 9 دقیقه قبل، maraljoon گفته است :

نه خوشبختانه. احتمال میدادم خطایی باشه برای همین چک کردم ولی چیزی نبود

من مورد خطایی به نظرم نمیرسه توی کدها.

احتمال میدم یه جای کار رو درست انجام ندادید.

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...