رفتن به مطلب

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


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

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

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

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

میتونید ادرس انلاین بزارید ؟
تو developer tools تب network 

فیلتر کنید روی ریکوئست های xhr

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

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

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

از کجا متوجه بشم کجای کار اشتباهه؟

آدرس سایتتون رو ندادید.

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

میتونید ادرس انلاین بزارید ؟
تو developer tools تب network 

فیلتر کنید روی ریکوئست های xhr

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

سلام.

اینو متوجه نشدم. دقیقا باید چیکار کنم؟ لینک میدید بهم؟

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

از کجا متوجه بشم کجای کار اشتباهه؟

آدرس سایتتون رو ندادید.

روی لوکال کار میکنم.

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

سلام.

اینو متوجه نشدم. دقیقا باید چیکار کنم؟ لینک میدید بهم؟

مثل عکسی که ضمیمه کردم عمل کنید تو تب network

گذینه Xhr

بعد روی دکمه کلیک کنید ببینید سطری مثل این اضافه میشه و چی Response میده 

Screen Shot 1396-09-11 at 12.13.50.png

ویرایش شده توسط mehdi...
لینک به ارسال

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

یک صفحه دارم به اسم main.php که توش مطالب مربوط به پست تایپ book رو نمایش میدم. این پست تایپ book دو تا taxonomy به اسم old و new داره.

وقتی میخوام مطلب منتشر کنم دو گزینه برای انتخاب دارم. یکی term های مربوط به old و یکی دیگه term مربوط به new. که مثلا برای مطلبی که منتشر میشه تیک term با نام A رو از تکسونومی old  و تیک B رو از تکسونومی new فعال میکنم  بعد مطلب منتشر میشه.

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

تو برگه main.php از کد زیر استفاده میکنم تا مطالب مربوط به این پست تایپ که تیک term های تکسونومی new رو اتخاب کردم نمایش بدم.

حالا اومدیم بالای این حلقه رادیوباکس هایی گذاشتیم که term های تکسونومی old رو نمایش میدن. و وقتی هر یک از اینا مثلا A انتخاب میشه تو حلقه مطلبی رو نمایش میده که هم تیک یکی از term های مربوط به old  براش انتخاب شده (A) و هم تیک Term مربوط به new که اسمش رو گذاشتم B

کدهای صفحه main

<?php
/*
Template Name:main
*/
?>
<?php get_header();?>


<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>

<div class="container-fluid">
<div class="row">

<div class="col-md-12">
 
 
 <div class="filtering" style="background:#ccc"></div>
<?php
$terms = get_terms( 'old', 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>';
}
?>
 </div>
 
    
<?php

$args = array(
  'post_type' => 'book',
  'post_status' => 'publish',
  'posts_per_page' => 10,
  'ignore_sticky_posts' => 1,
  'tax_query' => array(
    array(
      'taxonomy' => 'new',
      'field' => 'name',
      'terms' => 'B'
    )
  )
);

$query = new WP_Query($args);

if($query->have_posts()) :
	while($query->have_posts()) :
		$query->the_post();

?>


 
<div id="result" class="col-md-3 col-sm-3 col-xs-3 clearfix">
      <div  class="box ">
          <div class="image clearfix">
              <?php the_post_thumbnail(''); ?>
              </div>
             <h2 class="posttitle"><?php the_title(); ?></h2>
    </div>
    </div>

<?php
	endwhile;
	wp_reset_postdata();
endif;
?>


</div>
</div>
</div>
<?php get_footer();?>
 

بعد یک صفحه ساختم به اسم 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();

?>

تو فانکشن هم این اکشن رو گذاشتم

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

 

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

مثل عکسی که ضمیمه کردم عمل کنید تو تب network

گذینه Xhr

بعد روی دکمه کلیک کنید ببینید سطری مثل این اضافه میشه و چی Response میده 

 

برای من اینو نمایش میده:

 

33.png

لینک به ارسال

درود مجدد

 

به کد زیر توجه کنید:

<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>

توی سلکتور JQuery نوشتیم اگر تگ input ای که اتریبیوت name اش radiofilter بود رویداد change براش اتفاق افتاد AJAX رو اجرا کنه.

حالا شما اتربیوت name دکمه های رایویی تون که radiofilter نیست filterbook هست.

 

موفق باشید

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

برای من اینو نمایش میده:

 

33.png

کد جیکوری را تغییر بدید به این

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

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

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

موفق باشید

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

الان تو حالت عادی قبل از اینکه اون رادیو باکس هارو انتخاب کنم و چنج بشن با استفاده از اون حلقه ای که گذاشتم دارم مطالبی که تیک term مربوط به new براشون فعال شده رو نمایش میدم.

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

اینو باید چطوری رفع کنم؟

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

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

الان تو حالت عادی قبل از اینکه اون رادیو باکس هارو انتخاب کنم و چنج بشن با استفاده از اون حلقه ای که گذاشتم دارم مطالبی که تیک term مربوط به new براشون فعال شده رو نمایش میدم.

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

اینو باید چطوری رفع کنم؟

باید لایه با ای دی result را خارج کنید از حلقه

<?php
/*
Template Name:main
*/
?>
<?php get_header();?>


<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>

<div class="container-fluid">
<div class="row">

<div class="col-md-12">
 
 
 <div class="filtering" style="background:#ccc"></div>
<?php
$terms = get_terms( 'old', 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>';
}
?>
 </div>
 <div id="result">
    
<?php

$args = array(
  'post_type' => 'book',
  'post_status' => 'publish',
  'posts_per_page' => 10,
  'ignore_sticky_posts' => 1,
  'tax_query' => array(
    array(
      'taxonomy' => 'new',
      'field' => 'name',
      'terms' => 'B'
    )
  )
);

$query = new WP_Query($args);

if($query->have_posts()) :
	while($query->have_posts()) :
		$query->the_post();

?>


 
<div class="col-md-3 col-sm-3 col-xs-3 clearfix">
      <div  class="box ">
          <div class="image clearfix">
              <?php the_post_thumbnail(''); ?>
              </div>
             <h2 class="posttitle"><?php the_title(); ?></h2>
    </div>
    </div>

<?php
	endwhile;
	wp_reset_postdata();
endif;
?>

 </div>

</div>
</div>
</div>
<?php get_footer();?>

 

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

 

تشکر فراوان . درست شد. ممنونم

الان یه مشکلی هست اینه که وقتی رادیو باکس ها انتخاب میشن همه مطالب منتشر شده ای که مثلا فقط تیک term با اسم A براشون فعال شده رو از همه تکسونومی ها نمایش میده.

من میخوام مطالبی رو نمایش بده که مشترک باشن.یعنی وقتی رادیو باکس term با اسم A انتخاب میشه مطالبی رو نمایش بده که هم تیک term مربوط به old براش انتخاب شده باشه هم تیک term مربوط به new.

در واقع اولویت با new هست و وقتی که رادیو باکسی انتخاب میشه اگه term اون رادیوباکس توی مطلبی که تیک term مربوط به old براش انتخاب شده باشه فعال نباشه مشترکن اونجا دیگه مطلبی بر اساس اون رادیو باکس نمایش نده.

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

تا اینجا هم واقعا ممنونم از همراهی اساتید عزیز و گرامی جناب @mehdi...  و @mehran-b 

لینک به ارسال

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

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

مگه هدف شما همین نبود؟

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

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

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

مگه هدف شما همین نبود؟

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

دو سوال دیگه دارم ممنون میشم در این مورد هم راهنماییم کنید.

1. اینکه الان تو این رادیو باکس ها یه گزینه هیچ کدام گذاشتیم. میشه بجاش گزینه بذاریم که همه باشه. یعنی همه مطالب مربوط به این تاکسونومی نمایش داده بشه.

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

این مورد رو چطور میشه اضافه کرد؟

لینک به ارسال

و یک سوال دیگه. اون متن لودینگ نمایش داده نمیشه.

میشه بجاش از یک تصویر گیف استفاده کرد؟

لینک به ارسال

درود مجدد

 

نقل قول

1. اینکه الان تو این رادیو باکس ها یه گزینه هیچ کدام گذاشتیم. میشه بجاش گزینه بذاریم که همه باشه. یعنی همه مطالب مربوط به این تاکسونومی نمایش داده بشه.

اینجا کد توی فایل ideal.php این شکلی میشه:

<?php

$termid = $_GET['termid'];
$args = array(
	'posts_per_page' => 10,
	'post_status' => 'publish',
	'ignore_sticky_posts' => 1,
	'post_type' => 'book'
);
if(is_numeric($termid)) {
	if($termid == 0) {
		$terms_id = wp_list_pluck(get_terms(array('taxonomy' => 'old')), 'term_id');
		$args = array_merge($args, array(
			'tax_query' => array(
				array(
					'taxonomy' => 'old',
					'field' => 'term_id',
					'terms' => $terms_id
				)
			)
		));
	} else {
		$args = array_merge($args, array(
			'tax_query' => array(
				array(
					'taxonomy' => 'old',
					'field' => 'term_id',
					'terms' => (int) $termid
				)
			)
		));
	}
}
$myposts = new WP_Query($args);
while ( $myposts->have_posts() ) {
  $myposts->the_post(); ?>
	<div class="col-md-3 col-sm-3 col-xs-3 clearfix">
		<div class="box">
			<div class="image clearfix">
				<?php the_post_thumbnail(''); ?>
			</div>
			<h2 class="posttitle"><?php the_title(); ?></h2>
		</div>
	</div>
<?php }
wp_reset_postdata();

و کد نمایش دکمه های رادیویی ترم های تاکسونومی old این شکلی میشه:

<?php
$terms = get_terms(array(
	'taxonomy' => 'old',
    'hide_empty' => false
));
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
    echo '<ul>';
    echo '<li><label for="radioall"><input type="radio" name="filterbook" id="radioall" value="0">همه</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>';
}
نقل قول

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

این مورد رو اگر پاسخ داده نشد تا انتهای امروز پاسخ میدم.

نقل قول

و یک سوال دیگه. اون متن لودینگ نمایش داده نمیشه.

میشه بجاش از یک تصویر گیف استفاده کرد؟

برای نمایش لودینگ متنی در نظر گرفته نشده توی کدها صرفا اگر تگی HTML ای با آیدی loading در صفحه ای که دکمه های رادیویی هست وجود داشته نمایش داده میشه و بعد از اتمام کار AJAX هم مجدد مخفی میشه.

 

موفق باشید

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

 

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

 

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

برای نمایش لودینگ متنی در نظر گرفته نشده توی کدها صرفا اگر تگی HTML ای با آیدی loading در صفحه ای که دکمه های رادیویی هست وجود داشته نمایش داده میشه و بعد از اتمام کار AJAX هم مجدد مخفی میشه.

دقیقا کدوم بخش از صفحه باید این تگ گذاشته بشه.

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

 
<div class="col-md-3 col-sm-3 col-xs-3 clearfix">
      <div  class="box ">
          <div class="image clearfix">
              <?php the_post_thumbnail(''); ?>
              </div>
             <h2 class="posttitle"><?php the_title(); ?></h2>
    </div>
    </div>

<?php
	endwhile;
	wp_reset_postdata();
endif;
?>
<div id="loading"><h3>لطفا کمی صبر کنید  </h3></div>
 </div>

 

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

دقیقا کدوم بخش از صفحه باید این تگ گذاشته بشه.

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

 

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

لینک به ارسال

درود مجدد

 

نقل قول

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

برای این سوال ابتدا یه فایل php مثلا به اسم filterid.php توی فایل های قالبتون میسازید و کدهای زیر رو درونش قرار میدید.

<?php

$post_id = $_GET['post_id'];

if(!is_numeric($post_id)) {
	echo "آیدی پست باید عددی باشد";
	exit;
}

if("publish" != get_post_status($post_id)) {
	echo "پستی با این آیدی وجود ندارد";
	exit;
}

$args = array(
	'ignore_sticky_posts' => 1,
	'post_type' => 'book',
	'p' => (int) $post_id
);

$query = new WP_Query($args);

if($query->have_posts()) :
	while($query->have_posts()) :
		$query->the_post(); ?>
	<div class="col-md-3 col-sm-3 col-xs-3 clearfix">
		<div class="box">
			<div class="image clearfix">
				<?php the_post_thumbnail(''); ?>
			</div>
			<h2 class="posttitle"><?php the_title(); ?></h2>
		</div>
	</div>
	<?php
	endwhile;
	wp_reset_postdata();
else :
	echo "پستی با این آیدی وجود ندارد";
endif;

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

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

سپس برای بحث فرانت اِند مثلا با کد ساده زیر input مورد نظر رو ایجاد میکنید:

<ul>
<li>
<label for="pid">آیدی پست</label>
<input id="pid" name="pid" type="number" />
</li>
</ul>

و با کد JQuery زیر هم اگر درون input چیزی وارد شد یه درخواست به صورت AJAX ارسال میشه به صفحه filterid.php و نتیجه در صورت وجود بازگشت داده میشه:

<script>
  jQuery(function($) {
    $('input#pid').change(function(){
      $.ajax({
        type : "GET",
        url : "<?php echo home_url('/'); ?>",
        data : {
          do : 'filterID',
          post_id : $(this).val()
        },
        beforeSend : function() {
          $(".loading").fadeIn();
        },
        success : function(response) {
          $('#result').html(response);
          $(".loading").fadeOut();
        }
      });
    });
  });
</script>
نقل قول

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

بله این مورد هم ممکنه.

کد ideal.php این شکلی میشه:

<?php

$termid = $_GET['termid'];
$args = array(
	'posts_per_page' => 10,
	'post_status' => 'publish',
	'ignore_sticky_posts' => 1,
	'post_type' => 'book'
);
if(is_numeric($termid)) {
	$args = array_merge($args, array(
			'tax_query' => array(
				array(
					'taxonomy' => 'old',
					'field' => 'term_id',
					'terms' => (int) $termid
				)
			)
		));
	}
} else {
	$terms_id = array_map('intval', array_map('trim', explode(",", $termid)));
	$args = array_merge($args, array(
		'tax_query' => array(
			array(
				'taxonomy' => 'old',
				'field' => 'term_id',
				'terms' => $terms_id
			)
		)
	));
}
$myposts = new WP_Query($args);
while ( $myposts->have_posts() ) {
  $myposts->the_post(); ?>
	<div class="col-md-3 col-sm-3 col-xs-3 clearfix">
		<div class="box">
			<div class="image clearfix">
				<?php the_post_thumbnail(''); ?>
			</div>
			<h2 class="posttitle"><?php the_title(); ?></h2>
		</div>
	</div>
<?php }
wp_reset_postdata();

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

<?php
$terms = get_terms(array(
	'taxonomy' => 'old',
    'hide_empty' => false
));
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
    echo '<ul>';
    echo '<li><label for="radioall"><input type="radio" name="filterbook" id="radioall" value="x,x,x,x,x">همه</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>';
}

کد اون قیمت که 5 تا x رو با ورگویل انگلیسی جدا کردم باید آیدی دسته هایی رو بزنید که وقتی کاربر همه رو انتخاب کرد میخواید پست های اون دسته ها نمایش داده بشه و آیدی دسته های مورد نظر رو با ویرگول انگلیسی از هم جدا کنید.

 

موفق باشید

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

درود مجدد

برای این سوال ابتدا یه فایل php مثلا به اسم filterid.php توی فایل های قالبتون میسازید و کدهای زیر رو درونش قرار میدید

سلام و درود. تشکر از لطفتون..

کدهارو جاگذاری کردم. ایجکس ارسال میشه ولی در هر صورت پیغام پستی با این ایدی وجود ندارد رو نمایش میده. آیدی پستی که منتشر شده رو میدم ولی این پیغام ظاهر میشه.

آیا نیاز نیست بهش بگیم که آیدی مربوط به پست های این پست تایپ خاص که اسمش book هست رو نمایش بده؟؟

و یه مورد دیگه. چطور میشه برای این مورد (نمایش بر اساس آیدی) نتایج رو به یک صفحه دیگه ارسال کنیم و تو این صفحه main نمایش ندیم. مثلا تو یه صفحه ای به اسم  event.php نتایج رو نمایش بده

لینک به ارسال

درود مجدد

 

نقل قول

کدهارو جاگذاری کردم. ایجکس ارسال میشه ولی در هر صورت پیغام پستی با این ایدی وجود ندارد رو نمایش میده. آیدی پستی که منتشر شده رو میدم ولی این پیغام ظاهر میشه.

توی کدهای فایل filterid.php در دو جا پیغام پستی با این آیدی وجود ندارد ارسال می شود.

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

نقل قول

آیا نیاز نیست بهش بگیم که آیدی مربوط به پست های این پست تایپ خاص که اسمش book هست رو نمایش بده؟؟

این مورد رو توی آرگومان حلقه گفتیم.

نقل قول

چطور میشه برای این مورد (نمایش بر اساس آیدی) نتایج رو به یک صفحه دیگه ارسال کنیم و تو این صفحه main نمایش ندیم. مثلا تو یه صفحه ای به اسم  event.php نتایج رو نمایش بده

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

لینک به ارسال

این بخش از نمایش خطای کد رو تغییر دادم

    wp_reset_postdata();
else :
    echo "not found";
endif;

?>

الان این  not found رو نمایش میده.

البته چندتا از پست هارو تست کردم.

بعضی از آیدی هارو وارد میکنم not found رو نمایش میده

برای بعضی ها هم پستی با این ایدی وجود ندارد رو نمایش میده

ویرایش شده توسط maraljoon
لینک به ارسال

درود مجدد

 

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

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

لینک به ارسال

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

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

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

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

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

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

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

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

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