mehdi...

عضو سایت
  • تعداد ارسال ها

    434
  • تاریخ عضویت

  • آخرین بازدید

  • Days Won

    1

mehdi... last won the day on November 21 2017

mehdi... had the most liked content!

اعتبار در انجمن

240 خیلی خوب

درباره mehdi...

  • درجه
    کاربر ثابت

اطلاعات تماس

  • Website URL
    http://mehd.ir
  • Yahoo
    mehdiraized
  • Skype
    mehdiraized

اطلاعات شخصی

  • جنسیت
    مرد
  • موقعیت
    ایران
  • علاقمندی ها
    طراجی سایت در کنار موزیک مولایم و یه قهوه تلخ
    عاشقشم بهترین کار دنیاست
    D:
  • آشنایی با وردپرس
    متوسط
  • سطح برنامه نویسی
    متوسط
  • آشنایی با طراحی
    متوسط

آخرین بازدید کنندگان نمایه

1,214 بازدید کننده نمایه
  1. باید لایه با ای دی 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();?>
  2. کد جیکوری را تغییر بدید به این <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> کنسول را باز کنید و روی دکمه رادیو ها کلیک کنید هرچی تو کنسول چاپ شد اسکرین بگیرید بفرستید
  3. مثل عکسی که ضمیمه کردم عمل کنید تو تب network گذینه Xhr بعد روی دکمه کلیک کنید ببینید سطری مثل این اضافه میشه و چی Response میده
  4. میتونید ادرس انلاین بزارید ؟ تو developer tools تب network فیلتر کنید روی ریکوئست های xhr و وقتی روی دکمه ها کلیک میکنید ببینید ریکوئست ارسال میشه یا خیر
  5. کافیه این تیکه کد را حذف کنید function ipslatestMain( $query ) { $position = "bottom"; if($position === "bottom") $acton = "loop_end"; elseif ($position === "top") $acton = "loop_start"; add_action($acton,"ipslatest_main"); } و تو اون قسمتی که میخواید نمایش بدید این کد را قرار بدید مثلا تو هدر سایت هرجایی که میخواید نمایش پیدا کنه <?php ipslatest_main(); ?> یه نکته اینه که تو کد یه شرط هست که کد فقط تو صفحه خانه اجرا بشه میتونید اون شرط را حذف کنید //شرط :‌ if ( is_home() && $query->is_main_query() ) {
  6. تا اینجای کار ما دکمه های انتخابی فیلتر را درست کردم و با ایجکس مقدرا اون دکمه ها را وقتی کلیک میشدن ارسال کردیم به صفحه سرچ خوب حالا باید تو صفحه سرچ باید اون مطالبی را نشون بدیم که اون رادیو باتن ها کلیک شدن یعنی فیلتر کنم و اون مطالبی که تیک اون دسته خورده را نمایش بدیم اول تو صفحه سرچ یع تغییر کلی میدیم به این صورت <?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 را دارند پاسخ داده میشه به ایجکس نکته :‌ این ساده ترین حالت هست شما میتونید جیسون اطلاعات را بفرستید و نمایش بدید یا میتونید این ایجکس را به صفحه فانکشن بفرستید بجای سرچ و ... من سعی کردم این روش را بگم که درکش راحت تره حالا اگه مشکلی داشتید بگید تا حلش کنیم
  7. قرار نیست چیزی ایجکس فعلا براتون کاره خاصی بکنه من بخش سوم اموزش را میگم این ۳ بخش با هم بتون اون خروجی ای که میخواید را میده تو پاسخ بعدی میفرستم که انجام بدید بعدش همه کد هارا با هم یک جا میفرستم
  8. در مورد 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>
  9. در مرحله بعدی باید اجکس بزنید و اون مقدار انتخاب شده را ارسال کنید و در مرحله بعدی خروجی را بگیرید و نمایش بدید من این ریکوئست را به صفحه سرچ میزنم که ساده تره و شما بهتر میتونید یاد بگیرید بعد خودتون میتونید به 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 یا ... بریزید معمولا همون سکشن که همه پست ها توش قرار دارند را میزاریم چون قراره مطالب قبلی دیگه نمایش داده نشه و مطالب فیلتر شده جدید نمایش داده بشه اگه این مرحله هم انجام دادید و اوکی بود مرحله اخر هم بگم موفق باشید
  10. خیر اسم اون taxonomy هست شما فکر کنم باید old یا new که گفتید درست کردید قرار بدید
  11. با سلام برای ساخت فیلتر من این روش را به شما پیشنهاد میدم که همین روش را میشه بهتر پیاده کرد ولی برای اموزش مبتی خوبه و به کارتون میاد نکته ۱ :‌ مواردی که لینک شده که میتونید به داکیومنت تابع دسترسی داشته باشید و خروجی که میخواید را از تابع بگیرید نکته ۲ :‌ کد ها مرحله به مرحله کامل میشه و در اخر کد کامل را میزارم اول از همه با تابع ()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>'; } ?> تا اینجا میتونید ایتم های فیلتر را نمایش بدید اگه مشکلی نیست تا اینجای کار ادامه اموزش را ارسال کنم اگه سوالی هم دارید بپرسید
  12. با افزونه query monitor چیزی که من بررسی کردم معمولا خود وردپرس تو هر صفحه کوئری پیشفرض اون تمپلت را صدا میزنه مثلا در صفحه ارشیو و صفحه اصلی کوئری دریافت ۲۰ مطلب اخر ارسال میشه در صفحه سینگل و پیچ کوئری دریافت اطلاعات پست ارسال میشه البته اگه میگید ممکنه از کد های تم باشه ممنون میشم کمک کنید بفهمیم از چه کدی چون من قالب را کامل بررسی کردم
  13. یک سری کوئری توسط خوده وردپرس ران میشه که اگه کوئری مانیتور را فعال کنید میبینید نوشته Core مربوط به هسته وردپرس هست اون کوئری هایی که مربوط به قالب هست Theme مینویسه و این که میگید هیچ کوئری اجرا نمیشه مگه به وسیله پوسته یا افزونه حرف جالبی نیست !!!
  14. با سلام یه کوئری تو صفحه ایندکس ساید توسط خوده وردپرس فراخوانی میشه که تو لاین ۹۵۵ فایل فانکشن در پوشه wp-include هست میخوام اینو غیر فعال کنم ولی وقتی غیر فعال میکنم سرچ سایت دیگه کار نمی کنه بهترین راه برای غیر فعال کردن بعضی کوئری ها چیه ؟ و این کوئری را چطور غیر فعال کنم که به بقیه بخش های سایت ضربه نزنه
  15. سلام تو پی اچ پی مای ادمین کوئری هارا مانیتور میکنم و میخوام لاین اون کوئری را پیدا کنم تو قالب چطوری میتونم از ابزار هایی مثل کوئری مانیتور استفاده کردم ولی یک سری کوئری هارا نمیدونم تو چه صفحه ای صدا زده میشه اون کوئری هارا چیکار کنم ؟