• اطلاعیه ها

    • 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 پست در این موضوع قرار دارد

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

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

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

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

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

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

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

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

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

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

تشکر.

 

 

 

0

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


لینک به پست

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

با سلام

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

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

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

اول از همه با تابع ()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...
2

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


لینک به پست

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

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

 

سلام. تشکر

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

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

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

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

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


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

سلام. تشکر

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

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

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

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

 

2

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


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

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

 

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

0

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


لینک به پست

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

من این ریکوئست را به صفحه سرچ میزنم که ساده تره و شما بهتر میتونید یاد بگیرید بعد خودتون میتونید به 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  یا ... بریزید

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

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

موفق باشید

1

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


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

 

ممنون از شما.

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

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

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

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

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

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

0

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


لینک به پست

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

در 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...
1

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


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

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

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



 

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

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

 

0

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


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

 

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

 

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

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

0

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


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

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

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

 

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

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

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

 

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

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

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

0

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


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

 

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

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

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

عالیه.

تشکر

0

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


لینک به پست

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

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

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

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

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

به این صورت

<?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...
1

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


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

 

سلام.

تشکر.

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

0

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


لینک به پست

سلام و درود

 

با تشکر از توضیحات استاد عزیزم جناب @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 هست.

 

موفق باشید

1

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


لینک به پست

سلام و درود.

<?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 در اون صفحه نمایش داده میشه؟

0

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


لینک به پست

درود مجدد

 

نقل قول

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

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

نقل قول

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

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

نقل قول

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

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

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

 

موفق باشید

0

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


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

 

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

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

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

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

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

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>

باید توی دایوی با آیدی 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 بود جایگزین میکنه.

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

 

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

 

موفق باشید

2

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


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

 

سلام..

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

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

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

0

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


لینک به پست

درود مجدد

 

نقل قول

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

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

0

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


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

 

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

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

0

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


لینک به پست
نقل قول

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

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

0

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


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

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

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

0

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


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

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

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

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

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> ولی خب تو صفحه اول تو اون بخش مورد نظر که میذارم فقط یک سلکت باکس رو نمایش میده که هیچ مقداری توش نداره.
      ممنون میشم از راهنمایی هاتون..