رفتن به مطلب

کوئری خاص در دسته بندی ها


پست های پیشنهاد شده

سلام و حسته نباشید .

من توی فایل category.php می خوام مقادیری از پست هام را فراخانی کنم که یک زمینه‌ خاص مثلا زمینه‌ دلخواه " wordpress " را داشته باشه به تعداد 10 تا فراخوانی کنم و اولین پست را نشون نده ، البته می خوام این توی شرایطی باشه که هر دسته بندی مطالب خواص خود که زمینه‌ دلخواه " wordpress " به اون مطلب قلاب شده را نشون بده .

برای این کار کد زیر را نوشتم :


<?php query_posts('meta_key=wordpress&showposts=10&offset=1'); if (have_posts()) : while (have_posts()) : the_post(); ?>
<p><?php the_excerpt(); ?></p>
<?php endwhile; endif; wp_reset_query(); ?>

مشکل این کوئری این هست که توی همه دسته ها زمینه‌ دلخواه " wordpress " را بدون در نظر گرفتن دسته ای که توش هست نمایش میده .

یعنی اگه 4 تا دسته داشته باشیم که که مطالب هر دسته متفاوت باشه هم فرقی ندارد و همه دسته ها یک سان بر اساس زمینه‌ دلخواه " wordpress " لود میشه .

اگه بخواهم به کوئری cat=namber id اضافه کنم باید برای هر دسته یک فایل category.php اضافه کنم که نمی خوام این کار را کنم .

برای همین اومدم و یک کوئری جدید گرفتم :


<?php $myquery= new WP_Query( array( 'posts_per_page' => '10' , 'meta_key' => 'wordpress', 'offset' => 1 ));
while ( $myquery->have_posts() ) : $myquery->the_post()?>
<p><?php the_excerpt(); ?></p>

<?php endwhile; wp_reset_query(); ?>

این کوئری هم دقیقا همیون مشکل را داشت .

برای همین این کوئری را نوشتم :


<?php $args = array( 'meta_key' => 'wordpress' ); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<p><?php the_excerpt(); ?></p>
<?php endwhile; endif; wp_reset_query(); ?>

اینجا مشکل نمایش دسته ها را نداره و مطالب هر دسته درست ایجاد میشه اما 2 مورد دیگه را نا دیده میگیره یعنی offset را اجرا نمی کنه و تعداد نمایش مطلب را که هم با posts_per_page و showposts قرار دادم را عمل نمی کنه و نصب به تنظیمات نمایش مطلب نمایش میده .

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

بیش از این به زهنم چیزی نرسید که چه روشی و چه کاری انجام بدم .

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

لینک به ارسال

این کوئری دسته بندی را از صفحه ی جاری می خونه


<?php
$custom_query = new WP_Query(array(
'post_status' =>'published',
'post_type' =>'post',
'meta_key' => 'wordpress',
'order' =>'DESC',
'orderby' =>'ID',
'offset' => '1',
'posts_per_page' =>'6',
'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1
));
if($custom_query->have_posts()) :
while($custom_query->have_posts()) : $custom_query->the_post();?>

البته جاش هم مهمه باید بعد از


if(have_posts()) :

حلقه اصلی و قبل از


endif;

مربوط به همون شرط

ساخته بشه

لینک به ارسال

سلام و تشکر فراوان استاد فخار عزیز .

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


<?php if (have_posts())
$custom_query = new WP_Query(array(
'post_status' =>'published',
'post_type' =>'post',
'meta_key' => 'wordpress',
'order' =>'DESC',
'orderby' =>'ID',
'offset' => '1',
'posts_per_page' =>'6',
'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1
));
if($custom_query->have_posts()) :
while($custom_query->have_posts()) : $custom_query->the_post();?>
<p><?php the_excerpt(); ?></p>

<?php endwhile; else: ?><?php endif; ?>

هر چی توی codex وردپرس گشتم چیزی پیدا نکردم که برای cat قرار بدم و id همون دسته فعال را نشون بده .

لینک به ارسال

نیازی نیست

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

1. به محلی که کوئری را گذاشتید توجه کنید

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

لینک به ارسال

سلام مجدد .

من از این کوئری برای حلقه لود توی دسته بندی ها استفاده کردم .

قبلش که سربرگ لود میشه و هیچ حلقه ای توش نیست بعدش هم پانوشت هست.

لینک به ارسال

اگر کوئریتون دقیقا اینجوریه


if (have_posts())
$custom_query = new WP_Query(array(
'post_status' =>'published',
'post_type' =>'post',
'meta_key' => 'wordpress',
'order' =>'DESC',
'orderby' =>'ID',
'offset' => '1',
'posts_per_page' =>'6',
'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1
));
if($custom_query->have_posts()) :
while($custom_query->have_posts()) : $custom_query->the_post();?>
<p><?php the_excerpt(); ?></p>

<?php endwhile; else: ?><?php endif; ?>

تبدیلش کنید به


if (have_posts()) :
$custom_query = new WP_Query(array(
'post_status' =>'published',
'post_type' =>'post',
'meta_key' => 'wordpress',
'order' =>'DESC',
'orderby' =>'ID',
'offset' => '1',
'posts_per_page' =>'6',
'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1
));
if($custom_query->have_posts()) :
while($custom_query->have_posts()) : $custom_query->the_post();?>
<p><?php the_excerpt(); ?></p>

<?php endwhile; else: ?><?php endif; ?>

و در انتهای صفحه (نقطه قرینه if(have_post()) در صفحه ) هم


<?php endif;?>

اضافه کنید

اگر جواب نگرفتید

این روش گرفتن آی دی دسته بندی جاری است


$cats = strip_tags( get_the_category_list( ',' ) );
$cats = explode( ',', $cats );
if( !empty( $cats ) ){
$cat_ids = array();
foreach ( $cats as $cat ) {
$term_data = get_term_by( 'name', $cat, 'category' );
$cat_ids[] = $term_data->term_id;
}
}
//print_r($cat_ids);
$cats = implode( ',', $cat_ids );

و در کوئری هم بجای cat =>

بگذارید


'category__and' => $cat_id,

لینک به ارسال
  • 8 ماه بعد...

سلام اقا ایمان .

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

من میخوام 6 مطلب اخری که یک زمینه دلخواهی به عنوان مثال "hot-post" رو دارند، نمایش بدم. از ژنراتور هم کوئری گرفتم و درست اجرا میشه ولی یک مشکل داره، مشکلش اینه من الان دارم از افزونه acf برای زمینه های دلخواه استفاده میکنم، یعنی این شرط بدون اینکه مقداری داشته باشه اجرا میشه !!! من میخوام جوری باشه که وقتی زمینه دلخواهی که به عنوان مثال اگر چک باکسش تیک خورد این شرط براش اجرا بشه نه فقط اینکه اگر این پست زمینه رو داشت اجرا بشه، به شرطی که زمینه مقدار داشته باشه و چک باکسش تیک خورده باشه شرط اجرا بشه.

ممنون و تشکر

لینک به ارسال

می تونی از مقدار زمینه دلخواه کوئری بگیری البته به این شرط که همیشه ثابت باشه .

یعنی مقدار زمینه "hot-post" فقط "yes" باشه و مقدار های این نباشه را نشون نمی ده .


<?php $my_query = new WP_Query('meta_key=hot-post&meta_value=yes&showposts=6'); while ($my_query->have_posts()): $my_query->the_post(); $do_not_duplicate = $post->ID;?>
محتوا
<?php endwhile; ?>

این کوئری 6 تا از اخرین مطالبی که زمینه دلخواه "hot-post" را با مقدار "yes" داشته باشه نشون میده .

سلام اقا ایمان .

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

من میخوام 6 مطلب اخری که یک زمینه دلخواهی به عنوان مثال "hot-post" رو دارند، نمایش بدم. از ژنراتور هم کوئری گرفتم و درست اجرا میشه ولی یک مشکل داره، مشکلش اینه من الان دارم از افزونه acf برای زمینه های دلخواه استفاده میکنم، یعنی این شرط بدون اینکه مقداری داشته باشه اجرا میشه !!! من میخوام جوری باشه که وقتی زمینه دلخواهی که به عنوان مثال اگر چک باکسش تیک خورد این شرط براش اجرا بشه نه فقط اینکه اگر این پست زمینه رو داشت اجرا بشه، به شرطی که زمینه مقدار داشته باشه و چک باکسش تیک خورده باشه شرط اجرا بشه.

ممنون و تشکر

سلام اقا ایمان .

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

من میخوام 6 مطلب اخری که یک زمینه دلخواهی به عنوان مثال "hot-post" رو دارند، نمایش بدم. از ژنراتور هم کوئری گرفتم و درست اجرا میشه ولی یک مشکل داره، مشکلش اینه من الان دارم از افزونه acf برای زمینه های دلخواه استفاده میکنم، یعنی این شرط بدون اینکه مقداری داشته باشه اجرا میشه !!! من میخوام جوری باشه که وقتی زمینه دلخواهی که به عنوان مثال اگر چک باکسش تیک خورد این شرط براش اجرا بشه نه فقط اینکه اگر این پست زمینه رو داشت اجرا بشه، به شرطی که زمینه مقدار داشته باشه و چک باکسش تیک خورده باشه شرط اجرا بشه.

ممنون و تشکر

می تونی از مقدار زمینه دلخواه کوئری بگیری البته به این شرط که همیشه ثابت باشه .

یعنی مقدار زمینه "hot-post" فقط "yes" باشه و مقدار های این نباشه را نشون نمی ده .


<?php $my_query = new WP_Query('meta_key=hot-post&meta_value=yes&showposts=6'); while ($my_query->have_posts()): $my_query->the_post(); $do_not_duplicate = $post->ID;?>
محتوا
<?php endwhile; ?>

این کوئری 6 تا از اخرین مطالبی که زمینه دلخواه "hot-post" را با مقدار "yes" داشته باشه نشون میده .

لینک به ارسال

اخه مشکل همینه که منم اینکارو انجام دادم ولی نشد، من با افزونه acf زمینه دلخواهی به نام پیشنهاد دانلود ساختم، و یک چکباکس براش تعریف کردم به نام yes ، و کد شما رو هم باز تست کردم ولی نشد !!!

مشکل حل شد دوست عزیز ...

با تغییر زمینه دلخواه از چک باکس به دراپ باکس، و کوئری شما مشکل حل شد.

مرسی از شما ...

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

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

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...