• اطلاعیه ها

    • Saeed Fard

      برگزاری میتاپ وردپرسی   14/08/96

      بعد از اولین دوره همایش وردپرس در ایران اگر پیگیر اخبار وردپرس بوده باشید، حتما خبر برگزاری چندین میتاپ و جلسه متعدد وردپرسی را شنیده‌اید، یکی از بحث‌های اصلی که محور اصلی این میتاپ‌ها بوده است برگزاری وردکمپ بود که به طور جدی دنبال می‌شود. این میتاپ‌ها و جلسات توسط جمعی از فعلان حوزه وردپرس در کنار وردپرس‌پارسی برگزار می‌شد و مسائل مربوط به این حیطه و از جمله وردکمپ مورد بحث قرار می‌گرفت. این بار با رایزنی‌هایی که با تیم اصلی وردپرس داشتیم در بخش دوم این رویدادها قصد داریم که میتاپ‌ها و جلسات وردپرسی را به صورت آزاد برگزار کنیم تا تمامی علاقه‌مندان و دوست‌داران وردپرس فرصت حضور داشته باشند و با گردهمایی، جامعه کاملتری از دوست داران وردپرس بسازیم و از تجربیات یکدیگر استفاده کنیم.   بدیهی است که این رویدادها با رویکرد مثبت در جهت سود رسانی به جامعه وردپرس و افراد حاضر در آن برگزار می‌شود و برای تمامی علاقه‌مندان به وردپرس است. پس اگر یک کاربر معمولی وردپرس یا یک توسعه دهنده هستید می‌توانید در این رویدادها شرکت کنید. ما در ملاقات‌هایمان از موارد مختلف و کاربردی وردپرس صحبت می‌کنیم و علاقمند به توسعه هر چه بیشتر وردپرس در ایران هستیم. ما وردپرس را دوست داریم. عضویت در این گروه برای همه افرادی که مایل به پیوستن هستند بدون در نظرگرفتن توانایی‌ها، مهارت‌ها، وضعیت مالی و یا معیارهای دیگر باز و رایگان است. فضای میتاپ‌ها و جلسات ما دوستانه و آزادنه و دور از هرگونه تبعیض و رفتارهای زننده است. بر این اساس از تمامی دوستانی که علاقه‌مند به شرکت در میتاپ‌های وردپرس هستند دعوت می‌شود تا از طریق لینک زیر در سایت میتاپ اقدام به ثبت‌نام کنند و منتظر خبرهای برگزاری جلسات در آینده باشند . لینک ثبت نام و عضویت : https://www.meetup.com/Iran-WordPress-Meetup    
    • Saeed Fard

      نسخه جدید وردپرس پارسی رونمایی شد   05/09/96

      در پنجمین سال فعالیت از وردپرس پارسی و بعد از ارائه خدمات و سرویس‌های متفاوت به جامعه وردپرس ، برآن شدیم که نسخه جدید سایت وردپرس‌پارسی را بر اساس نیازها و خدمات جدیدی که قرار است ارائه شود طراحی و رونمایی کنیم ، از این جهت امروز یک ورژن از نسخه جدید رونمایی شد. در ادامه به معرفی بخش‌های مختلف سایت می‌پردازیم.     در دوره فعالیت گروه وردپرس‌پارسی بیش از 13 افزونه مختلف به صورت رایگان از طرف گروه برای وردپرس نوشته و منتشر شد که در مجموع دارای 100هزار نصب فعال روی سایت‌های وردپرسی است و 500هزاربار از مخزن پلاگین‌های وردپرس دانلود شده‌اند. به همین دلیل قسمت اول وب‌سایت مختص معرفی افزونه‌های گروه وردپرس‌پارسی طراحی شده است که در آن لیستی کامل از افزونه‌ها به همراه توضیحات در اختیار کاربران است . روند تولید افزونه‌های رایگان در جهت توسعه و بومی‌سازی بیشتر وردپرس از طرف وردپرس پارسی ادامه دارد و بزودی افزونه‌های دیگری به آرشیو اضافه خواند شد.   گروه وردپرس‌پارسی که تا به این‌جا تمرکز بیشتر خود را روی پشتیبانی رایگان از وردپرس گذاشته بود تا مشکلات کاربران وردپرس فارسی را حل کند که حاصل این فعالیت 18 هزار کاربر در انجمن با 43 هزار موضوع و 255 هزار سوال جواب است، قرار است من بعد در عرصه آموزش وردپرس وارد شود و از تخصص اعزای گروه در این حوزه نیز استفاده کند تا مرجعی کامل، اصولی و درست برای آموزش وردپرس ایجاد شود. قسمت دوم وب‌سایت مربوط به مقالات و آموزش‌هایی است که روی وردپرس پارسی از طرف اعضای آن ارسال می‌شود.   در دنیای وردپرس اتفاقات مختلفی در حال روی دادن است که دانستن آن‌ها میتونه برای ما جالب و جذاب باشه، برگزاری وردکمپ‌ها، معرفی سرویس‌ها و خدمات جدید و ... که از جمله اخبار مهم در این حوزه می‌توان برگزاری اولین همایش وردپرس ایران در سال 93 و همایش‌های دیگر مربوط به وردپرس و معرفی سیاره وردپرس و همینطور خبر برگزاری میتاپ‌های وردپرسی در ایران اشاره کرد ، در قسمت آخر وب‌سایت به معرفی موارد این چنینی پرداخته می‌شود و همینطور گزارش‌های مرتب از فعالیت‌ها، میتاپ‌ها و رویدادهای وردپرسی در آن ارائه می‌شود .   در ادامه این فعالیت‌ها بزودی شاهد اخبار جدیدی از وردپرس‌پارسی خواهید بود. شما نیز به عنوان یکی از کاربران این جامعه وردپرسی می‌توانید ما را در توسعه هر چه بیشتر وردپرس یاری کنید. لینک مستقیم خبر : http://wp-parsi.com/wpparsi-new-version  

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

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

0

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


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

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

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

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

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

1

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


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

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

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

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

0

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


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

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

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

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

سلام.

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

0

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


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

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

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

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

0

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


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

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

توی فایل ideal.php زیر اولین

<?php

کد زیر رو قرار بدید و مجدد تست کنید.

header('Access-Control-Allow-Origin: *');

 

0

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


لینک به پست

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

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

سلام.

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

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

گذینه Xhr

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

Screen Shot 1396-09-11 at 12.13.50.png

ویرایش شده در توسط mehdi...
2

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


لینک به پست

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

یک صفحه دارم به اسم 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';
        });
    }
});

 

0

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


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

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

گذینه Xhr

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

 

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

 

33.png

0

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


لینک به پست

درود مجدد

 

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

<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 هست.

 

موفق باشید

1

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


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

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

0

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


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

موفق باشید

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

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

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

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

0

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


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

 

1

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


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

 

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

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

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

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

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

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

0

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


لینک به پست

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

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

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

0

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


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

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

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

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

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

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

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

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

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

0

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


لینک به پست

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

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

0

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


لینک به پست

درود مجدد

 

نقل قول

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 هم مجدد مخفی میشه.

 

موفق باشید

0

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


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

 

0

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


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

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

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

 

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

0

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


لینک به پست

درود مجدد

 

نقل قول

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

 

موفق باشید

2

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


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

درود مجدد

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

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

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

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

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

0

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


لینک به پست

درود مجدد

 

نقل قول

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

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

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

نقل قول

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

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

نقل قول

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

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

1

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


لینک به پست

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

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

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

?>

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

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

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

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

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

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


لینک به پست

درود مجدد

 

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

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

0

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


لینک به پست

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

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

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

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


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

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

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


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

  • مطالب مشابه

    • توسط maraljoon
      سلام دوستان..
      بدنبال روشی بودم که بتونم در صفحه اصلی سایت در بخشی که با استفاده از حلقه جدیدترین مطالب رو نمایش میددم یک فیلتر مرتب سازی مثل فیلتر مرتب سازی همیار  ایجاد کنم. با سرچ هایی که کردم تو سایت های خارجی یه مورد پیدا کردم ولی چون انگلیشم تعریف زیادی نداره نتوستم خیلی خوب از آموزش استفاده کنم.
      لینک رو اینجا میذارم اگه دوستان زحت بکشن و آموزش رو ببینن و چیز دستگیرشون شد اینجا بگن..
      در کل اگه روشی هم میدونید که بشه چنین فیلتر مرتب سازی نوشت بگید ما مبتدی ها هم یاد بگیریم..
      تشکر فراوان
      لینک سایت خارجی : https://premium.wpmudev.org/blog/add-post-filters/
    • توسط maraljoon
      سلام.. وقت بخیر..
      دوستان، همونطور که میدونید تو صفحه فروشگاه ووکامرس گزینه ای سلکت باکسی وجود داره که میشه نمایش محصولات رو بر اساس جدیدترین ها ، محبوبترین ها و ... مرتب سازی کرد..
      مثل تصویری که ضمیمه کردم..
      من تو صفحه اول سایتم بخشی رو از حلقه ووکامرس استفاده کردم برای نمایش جدیدترین محصولات.
      چطور میتونم به این بخش تو صفحه اصلی سایتم اون فیلتر مرتب سازی رو اضافه کنم؟؟
      کدهایی که تو خود ووکامرس پیدا کردم به این شکله:
      <form class="woocommerce-ordering" method="get"> <select name="orderby" class="orderby"> <?php foreach ( $catalog_orderby_options as $id => $name ) : ?> <option value="<?php echo esc_attr( $id ); ?>" <?php selected( $orderby, $id ); ?>><?php echo esc_html( $name ); ?></option> <?php endforeach; ?> </select> <?php wc_query_string_form_fields( null, array( 'orderby', 'submit' ) ); ?> </form> ولی خب تو صفحه اول تو اون بخش مورد نظر که میذارم فقط یک سلکت باکس رو نمایش میده که هیچ مقداری توش نداره.
      ممنون میشم از راهنمایی هاتون..