mehran-b 2385 ارسال شده در آذر 96 گزارش بازنشر ارسال شده در آذر 96 درود مجدد بخوام به طور کلی بگم آرگومان کلاس WP_Query برای دریافت پست هایی که در پست تایپ design هستند و دارای یک متا با نام test هستن این شکلی میشه: $args = array( 'posts_per_page' => 10, 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'post_type' => 'design', 'meta_key' => 'test' ); نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در آذر 96 مالک گزارش بازنشر ارسال شده در آذر 96 در در 12/6/2017 at 20:28، mehran-b گفته است : حلقه وردپرس بر اساس یک meta_key خاص رو توی پاسخ های قبلیم در تاپیک های دیگر گفتم. سلام. میدونم خیلی اذیتتون کردم. ولی نتونستم این مورد رو انجام بدم. فیلتر بر اساس متاکی تو اون تاپیک قبلی فکر میکنم کمی با این قضیه فرق داره. منظورم این فیلتری که بهم آموزش دادید برای فیلتر ایجکس. اگه وقتشو داشتین ممنون میشم تو این مورد هم کمکم کنید. تشکر نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در آذر 96 مالک گزارش بازنشر ارسال شده در آذر 96 در در 12/7/2017 at 11:14، mehran-b گفته است : درود مجدد بخوام به طور کلی بگم آرگومان کلاس WP_Query برای دریافت پست هایی که در پست تایپ design هستند و دارای یک متا با نام test هستن این شکلی میشه: $args = array( 'posts_per_page' => 10, 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'post_type' => 'design', 'meta_key' => 'test' ); سلام. اصلا متوجه این تاپیکتون نشدم. تازه دیدمش. این موردش رو انجام داده بودم. فقط بخشی رو که مثلا میایم یه سلکت باکس تعریف میکنیم تا موارد مربوط به متاکی رو توش نمایش بدیم برام مشکله. مثل سلکت کدی زیر: <?php $terms = get_terms(array( 'taxonomy' => 'design', 'hide_empty' => false )); if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){ echo '<div class="design-main">'; foreach ( $terms as $term ) { echo ' <label class="control-label" for="inputdesign">paper</label> <select class="paper clearfix" id="inputdesign"></select> <label class="control-label glass" for="inputLocation"> glass </label> <select name="filter_design" id="inputLocation for="radio'.$term->term_id.'"> <option value="">-</option>'.$terms = get_the_terms($post->ID, 'design').' <option value="'.$term->term_id.'" selected="selected" '.$term->term_id.'" value="'.$term->term_id.'">'.$term->name.'</option></select>'; } echo '</div>'; } ?> نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در آذر 96 گزارش بازنشر ارسال شده در آذر 96 ساختار کاستوم فیلدتون به چه شکله؟ نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در آذر 96 مالک گزارش بازنشر ارسال شده در آذر 96 در 19 دقیقه قبل، mehran-b گفته است : پوزش. منظورتون رو از ساختار متوجه نشدم نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در آذر 96 گزارش بازنشر ارسال شده در آذر 96 در 12 دقیقه قبل، maraljoon گفته است : پوزش. منظورتون رو از ساختار متوجه نشدم اگر با کد ایجادش کردید کدش رو بفرستید اگر با افزونه ایجادش کردید عکس بگیرید از تنظیمات فیلد و ارسال کنید. نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در آذر 96 مالک گزارش بازنشر ارسال شده در آذر 96 در هم اکنون، mehran-b گفته است : چند مورد هست که نمونش بازدید مطالبه. کدی که تو فانکشن گذاشتم: <?php function set_post_views( $postID ) { $count_key = 'the_views'; $count = get_post_meta($postID, $count_key, true); if($count==''){ $count = 0; // delete old 'the_views' value. delete_post_meta( $postID, $count_key ); // add new 'the_views' value. add_post_meta( $postID, $count_key, '0' ); } else { $count++; // update old 'the_views' value. update_post_meta( $postID, $count_key, $count ); } } function get_post_views( $postID ) { $count_key = 'the_views'; $count = get_post_meta( $postID, $count_key, true ); if($count=='') { // delete old 'the_views' value. delete_post_meta( $postID, $count_key ); // add new 'the_views' value. add_post_meta( $postID, $count_key, '0' ); return "0 بازدید"; } return $count.'بازدید'; } نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در آذر 96 گزارش بازنشر ارسال شده در آذر 96 نگاه کنید شما میخواید یه سلکت باکس درست کنید که شامل مقدارهای یه meta_key خاصه. من میخوام بدوم اون مقدارهای meta_key مربوطه چیه که میخواید توی سلکت باکس لیست بشه؟ بعد سلکت باکسی هم که ساخته میشه اصلا داینامیک نیست یعنی باید option ها رو که همون meta_value هست خودتون براش تعریف کنید. نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در آذر 96 مالک گزارش بازنشر ارسال شده در آذر 96 (ویرایش شده) در 11 دقیقه قبل، mehran-b گفته است : تشکر مثلا یکی از موارد تعداد صفحات هست. من با استفاده از کاستوم فیلد زمینه دلخواهی درست کردم موقع انتشار مطلب برای هر پست میشه یک عدد انتخاب کرد. فعلا اعداد رو بصورت پیشفرض نذاشتم. ولی اگه پیشفرض باشه یک سلکت باکس بجای حالت فعلی تو کاستوم فیلد تعریف میکنم و چند تا عدد بهش میدم. 10 - 15 - 20 - 50 در صورتی که پیشفرض این اعداد رو تعریف کنم چطور میشه برای اون فیلتر تعریف کرد تا این اعداد رو نمایش بده و با انتخاب هر کدوم صفحه بصورت ایجکس مطالبی رو نشون بده بر اساس اون option انتخاب شده. مثلا عدد 10 و اگه این اعداد رو بصورت پیشفرض تعریف نکنم هم این امکان وجود داره؟ که خودش اعدادی که تو اون متاکی ثبت میشه رو لیست کنه؟ ویرایش شده آذر 96 توسط maraljoon نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در آذر 96 گزارش بازنشر ارسال شده در آذر 96 درود مجدد یه سلکت باکس استاتیک داریم: <select name="filter_meta"> <option selected disabled hidden>انتخاب دسته بندی</option> <?php $meta_value = array(10, 15, 20, 50); foreach($meta_value as $value) { echo '<option '.selected($_GET['filter_meta'], $value).' value="' . esc_attr($value) . '">' . esc_html($value) . '</option>'; } ?> </select> کد مربوط به AJAX این میشه: <script> $(document).ready(function(){ $('select[name="filter_meta"]').change(function(){ $.ajax({ type : "GET", url : "<?php echo home_url('/'); ?>", data : { do : 'filtermeta', mymeta : $(this).val() }, beforeSend : function() { $("#loading").fadeIn(); // show loading }, success : function(response) { $('#result').html(response); // change result $("#loading").fadeOut(); // hide loading } }); }); }); </script> کد فانکشن این میشه: add_action('template_redirect', function() { if(isset($_GET['do']) && $_GET['do'] == "filtermeta") { add_filter('template_include', function() { return get_template_directory() . '/filtermeta.php'; }); } }); کد فایل filtermeta.php هم این میشه: $meta = $_GET['mymeta']; $args = array( 'posts_per_page' => 10, 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'post_type' => 'design' 'meta_key' => 'test', 'meta_value' => $meta ); $myposts = new WP_Query($args); if(!$myposts->have_posts()) { echo "پستی وجود ندارد"; exit; } 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(); موفق باشید 1 نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در آذر 96 مالک گزارش بازنشر ارسال شده در آذر 96 (ویرایش شده) در ۱ ساعت قبل، mehran-b گفته است : سلام. واقعا ممنونم از این همه همراهیتون. اینکه اینقدر با حوصله جواب سوالاتمو دادین خیلی خیلی سپاسگزارم. پوزش. میشه option هر سلکت باکس دو تا عدد گذاشت که مثلا 1 تا 5 صفحه 6 تا 10 صفحه وقتی روی اولی کلیک میشه مواردی رو نشون بده که از 1 تا 5 توشون ثبت شده. ممکنه یه مطلب عدد 1 براش ثبت شده باشه. یکی عدد2 . یکی دیگه عدد 5 و .. ویرایش شده آذر 96 توسط maraljoon نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در آذر 96 گزارش بازنشر ارسال شده در آذر 96 درود مجدد این مورد هم ممکنه فقط کدنویسیش کمی پیچیده است. کد مربوط به ایجاد سلکت باکستون: <select name="filter_meta"> <option selected disabled hidden>انتخاب دسته بندی</option> <?php $meta_value = array('1-5', '6-10', 10); foreach($meta_value as $value) { echo '<option '.selected($_GET['filter_meta'], $value).' value="' . esc_attr($value) . '">' . esc_html($value) . '</option>'; } ?> </select> کد مربوط به فایل filtermeta.php : <?php $meta = $_GET['mymeta']; $args = array( 'posts_per_page' => 10, 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'post_type' => 'design' ); $meta_key = "test"; if(is_numeric($meta)) { $args = array_merge($args, array( 'meta_key' => $meta_key, 'meta_value' => $meta )); } else { $meta_values = array_map('intval', array_map('trim', explode("-", $meta))); $range = range(min($meta_values), max($meta_values)); $strval = array_map('strval', $range); $meta_query = array( 'meta_query' => array( ) ); foreach($strval as $nmeta) { $meta_query['meta_query'] = array_merge($meta_query['meta_query'], array( array( 'key' => $meta_key, 'value' => $nmeta ) )); } if(count($meta_query['meta_query']) > 1) $meta_query['meta_query'] = array_merge($meta_query['meta_query'], array( 'relation' => 'AND' )); $args = array_merge($args, $meta_query); } $myposts = new WP_Query($args); if(!$myposts->have_posts()) { echo "پستی وجود ندارد"; exit; } 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(); سایر کدها تغییری نخواهد داشت. موفق باشید 1 نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در آذر 96 مالک گزارش بازنشر ارسال شده در آذر 96 در 20 ساعت قبل، mehran-b گفته است : سلام.. ممنونم. متاسفانه نمیدونم چرا جواب نداد. وقتی هر کدوم از آپشن های سلکت باکسرو انتخاب میکنم مطالبی رو فقط نمایش میده که براشون اون عدد رو ثبت نکردم. مطالبی که اعداد براشون ثبت شده نمایش داده نمیشن. نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در آذر 96 گزارش بازنشر ارسال شده در آذر 96 کوئری تولید شده توسط کد درسته ولی میشه اینم تست کرد. <?php $meta = $_GET['mymeta']; $args = array( 'posts_per_page' => 10, 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'post_type' => 'design' ); $meta_key = "test"; if(is_numeric($meta)) { $args = array_merge($args, array( 'meta_key' => $meta_key, 'meta_value' => $meta )); } else { $meta_values = array_map('intval', array_map('trim', explode("-", $meta))); $range = range($meta_values[0], $meta_values[1]); $meta_query = array( 'meta_query' => array( ) ); foreach($range as $nmeta) { $meta_query['meta_query'] = array_merge($meta_query['meta_query'], array( array( 'key' => $meta_key, 'meta_value_num' => $nmeta, 'meta_compare' => '=' ) )); } if(count($meta_query['meta_query']) > 1) $meta_query['meta_query'] = array_merge($meta_query['meta_query'], array( 'relation' => 'AND' )); $args = array_merge($args, $meta_query); } $myposts = new WP_Query($args); if(!$myposts->have_posts()) { echo "پستی وجود ندارد"; exit; } 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(); موفق باشید نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در آذر 96 مالک گزارش بازنشر ارسال شده در آذر 96 در 23 دقیقه قبل، mehran-b گفته است : تشکر این دفعه یکسری مطالب بی ربطی رو آورد که اصلا با آپشن ها یکی نیستن. میگم شاید مشکل از این باشه که داریم توی آپشن دو عدد میاریم. میشه بجاش دو تا سلکت باکس گذاشت و مثلا یکری اعدا 1 تا 5 رو توی سلکت باکس اولی و 5 تا 10 رو تو سلکت باکس بعدی گذاشت. یعنی هر آپشن یک عدد توش باشه که با انتخاب آپشن تو سلکت باکس اول و دوم بر اساس این سرچ کنه. نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در آذر 96 گزارش بازنشر ارسال شده در آذر 96 من امکان تست خروجی ندارم. نقل قول میگم شاید مشکل از این باشه که داریم توی آپشن دو عدد میاریم. میشه بجاش دو تا سلکت باکس گذاشت و مثلا یکری اعدا 1 تا 5 رو توی سلکت باکس اولی و 5 تا 10 رو تو سلکت باکس بعدی گذاشت. یعنی هر آپشن یک عدد توش باشه که با انتخاب آپشن تو سلکت باکس اول و دوم بر اساس این سرچ کنه. من مقدار دریافتی رو با خط فاصله از هم جدا کردم و رنج اعداد بین اون دو عدد رو در آوردم و برای هر کدومش به کوئری دستور اضافه کردم در نتیجه این موردی که میگید مشکل نیست. نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در آذر 96 مالک گزارش بازنشر ارسال شده در آذر 96 در 29 دقیقه قبل، mehran-b گفته است : من امکان تست خروجی ندارم. من مقدار دریافتی رو با خط فاصله از هم جدا کردم و رنج اعداد بین اون دو عدد رو در آوردم و برای هر کدومش به کوئری دستور اضافه کردم در نتیجه این موردی که میگید مشکل نیست. در واقع کدی که نوشتید میاد از بین مطالب اون مواردی رو نشون میده که تو سلکت باکس انتخاب شده؟ درسته؟ فرضا اگه تو مطلبی عدد1 رو تو اون زمینه دلخواه انتخاب و منتشر کرده باشیم وقتی با انتخاب گزینه 1- تا 5 توی سلکت باکس فیلتر برامون این مطلب که زمینه دلخوه عدد1 براش ثبت شده نمایش داده میشه؟؟ نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در آذر 96 گزارش بازنشر ارسال شده در آذر 96 وقتی شما 1 تا 5 رو انتخاب میکنی میاد تمامی پست هایی که توی پست تایپ design هستن و متای کی test اشون مقدار 1 یا 2 یا 3 یا 4 یا 5 داره رو لیست میکنه. نکته شما متغییر $meta_key رو با کلید متای خودتون جایگزین نکردید مقدارش رو. نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در آذر 96 مالک گزارش بازنشر ارسال شده در آذر 96 (ویرایش شده) در ۱ ساعت قبل، mehran-b گفته است : چرا. جایگزین کردم. منظورتون همون test هست دیگه؟ کلید متای خوم رو گذاشتم جای test. تو کد زیر برای سلکت باکسی که ساختیم اون عدد 10 برای چیه؟ چرا مثل دو تای دیگه بین دو عدد نیست؟ <select name="filter_meta"> <option selected disabled hidden>انتخاب دسته بندی</option> <?php $meta_value = array('1-5', '6-10', 10); foreach($meta_value as $value) { echo '<option '.selected($_GET['filter_meta'], $value).' value="' . esc_attr($value) . '">' . esc_html($value) . '</option>'; } ?> </select> ویرایش شده آذر 96 توسط maraljoon نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در آذر 96 گزارش بازنشر ارسال شده در آذر 96 کدی که ارسال کردم براتون هم تک عدد رو ساپورت میکنه هم بازه اعداد اون 10 یعنی فقط اونایی که مقدار فیلدشون 10 هست رو نشون میده و بازه ها هم که قبلا دربارش گفتم. البته اون 10 باید داخل کوتیشن باشه. <select name="filter_meta"> <option selected disabled hidden>انتخاب دسته بندی</option> <?php $meta_value = array('1-5', '6-10', '10'); foreach($meta_value as $value) { echo '<option '.selected($_GET['filter_meta'], $value).' value="' . esc_attr($value) . '">' . esc_html($value) . '</option>'; } ?> </select> نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در آذر 96 مالک گزارش بازنشر ارسال شده در آذر 96 در 1 دقیقه قبل، mehran-b گفته است : کدی که ارسال کردم براتون هم تک عدد رو ساپورت میکنه هم بازه اعداد اون 10 یعنی فقط اونایی که مقدار فیلشون 10 هست رو نشون میده و بازه ها هم که قبلا دربارش گفتم. اون تک عدد هم براش کار نمیکنه. برای کدی که قبلا داده بودید تک عدد ها به خوبی جواب میداد نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در آذر 96 گزارش بازنشر ارسال شده در آذر 96 در هم اکنون، maraljoon گفته است : اون تک عدد هم براش کار نمیکنه. برای کدی که قبلا داده بودید تک عدد ها به خوبی جواب میداد کامنت قبلی رو ویرایش کردم. نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در آذر 96 مالک گزارش بازنشر ارسال شده در آذر 96 (ویرایش شده) در 22 دقیقه قبل، mehran-b گفته است : تشکر. برای تک عدد نمایش میده ولی برای دو عددی وقتی انتخاب میشه نمایش نمیده. در واقع لودینگ میاد و گیر میکنه.. تو این بخش از کد $meta = $_GET['mymeta']; mymeta رو خوتون تعریف کردین یا اینکه متغیر ثابتی هست؟ اگه نیاز باشه از این کد استفاده بشه برای کلید متاهای دیگه باید تغییر کنه؟ ویرایش شده آذر 96 توسط maraljoon نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در آذر 96 گزارش بازنشر ارسال شده در آذر 96 در 5 ساعت قبل، maraljoon گفته است : تو این بخش از کد $meta = $_GET['mymeta']; mymeta رو خوتون تعریف کردین یا اینکه متغیر ثابتی هست؟ اگه نیاز باشه از این کد استفاده بشه برای کلید متاهای دیگه باید تغییر کنه؟ این mymeta رو احتیاجی نیست تغییر بدید. نقل قول لینک به ارسال
maral_hamidi 82 ارسال شده در آذر 96 مالک گزارش بازنشر ارسال شده در آذر 96 در در 12/12/2017 at 21:06، mehran-b گفته است : سلام مجدد. آیا میشه از همین کدهایی که دادید برای مرتب سازی بر اساس کلید متای بازدید هم استفاده کرد؟ من کدهای فانکشن ، اسکریپت و کدهای مربوط به صفحه ای که از طریق فانکشت ریدایرکت میشه رو طبق کدهایی که دادی با تغییرات درست کردم. فقط اون بخش فرانت اند کار نمیدونم باید چطوری باشه. مثلا باید یک باتم بسازم یا چیز دیگه؟ و کدها به چه شکل میشن؟ فکر میکنم کدی که میذارم درست نیست و کار خاصی انجام نمیده. <form method="get"> <button name="filter_view" type="submit" value="HTML">مرتب سازی بر اساس پربازدیدترین</button> </form> نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .