poolmaster 17 ارسال شده در آبان 93 گزارش بازنشر ارسال شده در آبان 93 با سلامیک کوئری به شکل زیر دارم که پست هایی که دارای یک دسته مشابه از تاکسونومی با عنوان series هست رو دارن بصورت لیست در صفحه single نمایش میده ولی یه مشکل داره اگر پستی منتشر بشه و جز هیچ دسته ای از تاکسونومی series نباشه ارور میده و به خط 4 رم کدها جایی که foreach ایجاد شده اشاره میکنه !!!حالا چه تغییری در کدها ی زیر باید بدم اگر مطلب یا همون پست منتشر شده جز هیچ دسته ای از تاکسونومی series نبود این کوئری اجرا نشه و اگر جزه دسته ای بود اجرا بشهممنونکار این کوئری هم در کل برای مطالبی هست که بصورت دوره و سریالی در سایت منتشر میشه و برای دسترسی راحت تر کاربرا به سایر قسمت های دوره منتشر شده هستشممنون میشم راهنمایی کنید...<?phpforeach((get_the_terms($post->ID, 'series')) as $term) { echo '<p> </p>'; }?><?php $args = array( 'post_type' => 'post', 'order' => 'DESC', 'orderby' => 'date', 'tax_query' => array( array( 'taxonomy' =>'course', 'field' => 'term_id', 'terms' =>$term ) ) ); $r_query = new WP_Query($args); if ($r_query->have_posts()) {echo '<div class="course-container"><div id="flip"><span>لیست سایر قسمت های این مطلب که تاکنون منتشر شده است...</span><div class="arrow-down"></div></div><div id="panel"><div id="course_posts_list" style="margin:0px !important" class="alert alert-info">'; while ($r_query->have_posts()) { $r_query->the_post(); echo '<li><span class="list-icon"> </span><a target="_blank" title="'. get_the_title().'" href="'. get_permalink().'">' . get_the_title() . '</a> <span class="date-tab hidden-xs"> (تاریخ انتشار :'.the_date('d F Y','','',false).')</span></li>'; }echo '</div></div></div>';} wp_reset_postdata(); ?> نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در آبان 93 گزارش بازنشر ارسال شده در آبان 93 البته کل مسیر توصیه نمی شه چون مصرف بالایی داره <?php$terms = get_the_terms($post->ID, 'series');if($terms) :foreach($terms as $term) {//...}?><?php $args = array( 'post_type' => 'post', 'order' => 'DESC', 'orderby' => 'date', 'tax_query' => array( array( 'taxonomy' =>'course', 'field' => 'term_id', 'terms' =>$term ) ) ); $r_query = new WP_Query($args); if ($r_query->have_posts()) {echo '<div class="course-container"><div id="flip"><span>لیست سایر قسمت های این مطلب که تاکنون منتشر شده است...</span><div class="arrow-down"></div></div><div id="panel"><div id="course_posts_list" style="margin:0px !important" class="alert alert-info">'; while ($r_query->have_posts()) { $r_query->the_post(); echo '<li><span class="list-icon"> </span><a target="_blank" title="'. get_the_title().'" href="'. get_permalink().'">' . get_the_title() . '</a> <span class="date-tab hidden-xs"> (تاریخ انتشار :'.the_date('d F Y','','',false).')</span></li>'; }echo '</div></div></div>';} wp_reset_postdata(); endif; ?> 3 نقل قول لینک به ارسال
poolmaster 17 ارسال شده در آبان 93 مالک گزارش بازنشر ارسال شده در آبان 93 ممنون استاد ممنون از راهنماییتون کوئری بهینه تری سراغ دارید ؟؟؟بطور کلی سه تا تاکسونومی با نامه های series,course و vip دارم می خوام مطالبی که دارای دسته مشابه در یکی از این تاکسونومی ها بود بصورت لیست در قسمت جدیدی که از مطلب مشابه منتشر میشه نمایش داده یشه یه چیزی مثل مطالب مرتبط با این تفاوت که فیلتر رو بزاره روی دسته های یک یا چند تاکسونومی و اون هایی که دسته مشابه دارن زیر هم لیست بشنممنون میشم راهنمایی بفرمایید... نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در آبان 93 گزارش بازنشر ارسال شده در آبان 93 این کد شما فقط آخریم term را در نظر می گیره و برای خوندش تمام ترمهای اون تاکسونامی رو در مطلب جاری باید بخونه چون شما term را از بعد از اتمام حلقه foreach گرفتید حالا اگر تعداد ترمهای هر مطلب یکی باشه خیلی مهم نیست ولی اگر قراره چندین ترم داشته باشه کدتون بهینه نیست 2 نقل قول لینک به ارسال
poolmaster 17 ارسال شده در آبان 93 مالک گزارش بازنشر ارسال شده در آبان 93 درسته و حتما چندین ترم خواهد داشت بسته به هر سری آموزشی که ایجاد میشه یک ترم هم اضافه خواهد شد حالا به نظر شما چطور کد رو اصلاح کنم؟؟؟ نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در آبان 93 گزارش بازنشر ارسال شده در آبان 93 شما دقیقا چی کار می خواهید انجام بدید؟ارتباط تاکسونامی series با course چیه؟ چرا از یک تاکسونامی استفاده نشده؟ 2 نقل قول لینک به ارسال
poolmaster 17 ارسال شده در آبان 93 مالک گزارش بازنشر ارسال شده در آبان 93 (ویرایش شده) من سه تا تاکسونومی با نام های series,course و vip دارم که در کاستوم پست تایپ post هستند که هر کدوم شما یکسری دسته هست بهصورت زیر:seriesآموزش برنامه نویسی phpآموزش طراحی وب...vipآموزش برنامه نویسی اندروییدآموزش فتوشاپ...courseآموزش css,htmlآموزش سئو...که بسته به دوره های جدید این دسته ها بیشتر می شن حالا فرض میکنیم یه دوره آموزشی برنامه نویسی php که شامل 20 قسمت هست قراره در سایت منتشر بشه حالا زمانی که می خواهیم هر قسمت رو در سایت منتشر کنیم دسته آموزش برنامه نویسی php برای این دوره درنظر میگیریم حالا من می خوام در صفحه single هر قسمت از این دوره لیست سایر قسمت های این دوره که در سایت منتشر شده برای راحتی کاربر در دسترسی به سایر قسمت هاش نمایش داده بشه و کوئری بیاد چک کنه اگر برای هر مطلب از این دوره اگر این دسته آموزش برنامه نویسی php در نظر گرفت شد در لیست سایر قسمت های این دوره که گفتم نمایش داده بشه برای سایر تاکسونومی ها به همین صورت و این سه تاکسونومی رو ایجاد کردم که مطالب برای هر مورد نظم داشته باشهاین چیزی هست که مد نظر من هست نمیدونم شاید راه بهتر دیگه ای هم داشته باشه اما من نسبت به اطلاعاتم این حالت کوئری زدن به نظرم رسیددر کل میخوام که سایر قسمت های یه دوره آموزشی که جز یکی از دسته های تاکسونومی هایی که در بالا اشاره کردم بود در در صفحات single هر قسمت اون دوره نمایش داده بشه یه چیزی مثل تصویر زیر :با سپاس و تشکر از شما استاد گرامی... ویرایش شده آبان 93 توسط poolmaster نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در آبان 93 گزارش بازنشر ارسال شده در آبان 93 من باز هم متوجه نشدم شما در کدتون ترم تاکسونامی series را گرفتید و برای تاکسونامی course کوئری نوشتید این کد مطالبی که ترم مشترک با مطلب جاری در تاکسونامی series دارند $series = get_the_term_list($post->ID, 'series');if(!empty($series))$series = strip_tags($series);if ( $series && ! is_wp_error( $series) ) {$series_query = new WP_Query( array('showposts'=> '-1', 'post__not_in' => array( $post->ID), 'series' => $series,'caller_get_posts'=>1, 'post_type' => array('post'),) );if ($series_query->have_posts()) { echo '<ul class="list-group">'; while ($series_query->have_posts()) : $series_query->the_post(); ?> <li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li> <?php endwhile; echo '</ul>'; }wp_reset_query();} 2 نقل قول لینک به ارسال
poolmaster 17 ارسال شده در آبان 93 مالک گزارش بازنشر ارسال شده در آبان 93 شرمنده استاد اشتباه تایپی من بود بجای course باید همون series رو قرار میدادم در کدهای بالابسیار عالی همین کوئری که شما دادید بسیار خوبه و کار میکنه فقط بعنوان سوال آخر حالا اگر بخواهیم در همین کوئری که شما دادید 2 تاکسونومی دیگه یعنی course و vip رو هم بگونجونیم به چه صورته؟یعنی توسط همین یه کوئری 3 تا تاکسونومی موجود رو بررسی کنیم و مطالب هم دستشون رو نشون بدیم ؟؟؟ چون میشه سه با این کوئری رو برای 3 تاکسونومی بصورت مجزا ولی ادغامش کنیم و برای هر سه تاکسونومی از یه کوئری استفاده کنیم بهتره... ممنون میشم این مورد رو هم توضیح بدید... نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در آبان 93 گزارش بازنشر ارسال شده در آبان 93 اگر هر سه تاکسونامی در مطالب مشترکند یعنی مطلب یک ترم از هر کدام داشته باشد $series = get_the_term_list($post->ID, 'series');$course = get_the_term_list($post->ID, 'course');$vip = get_the_term_list($post->ID, 'vip');if(!empty($series))$series = strip_tags($series);if(!empty($course))$course = strip_tags($course);if(!empty($vip))$vip = strip_tags($vip);if ( $series && ! is_wp_error( $series) && $course && ! is_wp_error( $course) && $vip && ! is_wp_error( $vip) ) {$series_query = new WP_Query( array('showposts'=> '-1', 'post__not_in' => array( $post->ID), 'series' => $series, 'course' => $course, 'vip' => $vip,'caller_get_posts'=>1, 'post_type' => array('post'),) );if ($series_query->have_posts()) { echo '<ul class="list-group">'; while ($series_query->have_posts()) : $series_query->the_post(); ?> <li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li> <?php endwhile; echo '</ul>'; } 1 نقل قول لینک به ارسال
poolmaster 17 ارسال شده در آبان 93 مالک گزارش بازنشر ارسال شده در آبان 93 واقعا ممنونم جناب فخار خیلی لطف کردین و مشکل حل شد... 1 نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .