رفتن به مطلب

لیست شدن پست های دسته بندی مطلب در حال نمایش


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

با سلام

من میخوام کدی در سایدبار (از طریق ابزارک ها یا داخل فایل سایدبار) قرار بدم که :

1- ID دسته مطلبی که کاربر در حال مشاهده اون هست رو دریافت کرده و با استفاده از یک کوئری (یا شیوه دیگر!) عناوین دیگر مطالب آن دسته را لیست کند.

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


function zcat_shortcode($cati) {
ob_start();
$custom_query = new WP_Query(array(
'post_status' =>'publish',
'post_type' =>'post',
'order' =>'descending',
'orderby' =>'ID',
'cat' =>'1',
'posts_per_page' =>'100',

));
if( $custom_query->have_posts() ) :
while($custom_query->have_posts()) : $custom_query->the_post();?>
<strong><a href="<?php the_permalink() ?>" title="ادامه نوشته<?php the_title_attribute(); ?>" target="_blank"> <?php the_title(); ?> </a></strong><br /><?php PHP_EOL; ?>
<?php
endwhile; endif;
wp_reset_query();
return ob_get_clean();

}
add_shortcode('zcat', 'zcat_shortcode');

چه دستوری باید در فایل فانکشن یا قالب سایت استفاده بشه که ID دسته مطلبی که کاربر در اون قرار داره رو به این کوئری بده ؟!

1.2-(اگر امکانش هست) عنوان مطلبی که کاربر در اون قرار داره نمایش داده نشه!

2- اگر کاربر در مطلبی قرار نداشت، این کد ها و لیست شدن نمایش داده نشود.

اگر برای این کار از یک دستور شرط (if) در قالب (جایی که میخوام این لیست شدن انجام بشه) استفاده کنم و شرط بذارم که اگر داخل فایل single.php قرار داشت این کار رو انجام بده؛ درست و مناسبه ؟!

با تشکّر

ویرایش شده توسط omid_r
لینک به ارسال

 <?php
$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 );
$args = array(
'posts_per_page' => 10,
'post__not_in' => array( get_the_id() ),
'category' => $cat_ids ,
'orderby' => 'rand'
);
$related_query = new WP_Query( $args );
if ($related_query->have_posts()) :?>
<?php while($related_query->have_posts()) : $related_query->the_post();?>
<strong><a href="<?php the_permalink() ?>" title="ادامه نوشته<?php the_title_attribute(); ?>" target="_blank"> <?php the_title(); ?> </a></strong>
<?php
endwhile;
?>
<?php else : ?>
<p> مطلب مشابه پیدا نشد</p>
<?php
endif;
wp_reset_query();
?>

کد را در single.php و داخل حلقه قرار بدید

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


<?php if(is_single()) : ?>
<!-- محل کدها -->
<?php endif;?>

قرار بدید

لینک به ارسال

کد را در single.php و داخل حلقه قرار بدید

1- منظورتون از حلقه چی هست ؟!

چون الآن اونطور که از کد معلومه برای نمایش عنوان نوشته ها کد داخل حلقه while قرار گرفته!

منظورتون حلقه دیگری هست ؟!

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

2- کدهای قالب سالم هستند ولی از کجا باید بفهمم که هیچ کوئری ای باز نمونده ؟!

3- برای نمایش نوشته ها بر اساس تاریخ و از قدیم به جدید (اولین عنوان قدیمی ترین ارسال در اون دسته باشه!) باید به جای کد


'orderby' => 'rand'

کد


'order' =>'descending',
'orderby' =>'date',

رو قرار بدم ؟!

4- وقتی کد شما (بدون تغییر!) رو استفاده میکنم، عنوان تمامی مطالب رو نمایش و لینک میده!

(البته به جز همون مطلبی که داخل قرار دارم ...)

مشکل از کجا میتونه باشه ؟

با تشکّر

ویرایش شده توسط omid_r
لینک به ارسال

حلقه ی while حاضر حلقه ی کوئری کل این کوئری باید در داخل حلقه ی while فایل single.php اجرا بشه / باید تست کنید اگر در سایدبار درست نشون داد کوئری باز ندارید ولی اگر درست نشون نداد دارید / برای نمایش نوشته ها بر اساس تاریخ این را جایگزین کنید


'order' => 'DESC',

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

لینک به ارسال

با عرض پوزش؛ مورد حلقه رو هنوز نفهمیدم!

یعنی نفهمیدم چطور باید قرار بگیره!

کد های فایل single ، با قرار دادن کدهایی که شما دادید (بدون تعریف حلقه)، در زیر قابل مشاهده است:


<?php get_header(); ?>

<div class="column-one">
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<article>

<header class="clearfix">
<ul class="meta">
<li><span class="categories"><?php the_category(', '); ?></span></li>
<li><span class="comments"><?php comments_popup_link(__('0', 'site5framework'), __('1', 'site5framework'), __('%', 'site5framework')); ?> </span></li>
<li><span class="tags"><?php the_tags('') ?></a>
</ul>
</header>
<?php if(has_post_thumbnail() and get_post_meta($post->ID, 'featured-img') ):?>
<a href="<?php echo get_post_meta($post->ID, 'featured-img', true);?>" rel="lightbox" ><?php the_post_thumbnail('thumbnail', array('class'=>'blog-thumb'));?></a>
<?php elseif(has_post_thumbnail()):?>
<?php the_post_thumbnail('thumbnail', array('class'=>'blog-thumb'));?>
<?php endif; ?>
<div class="blog-entry">
<h2 class="post-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>

</div>
<span class="clearfix"></span>
<?php the_content(); ?>
<?php endwhile; ?>
</article>
<?php else: ?>
<article>
<div class="blog-entry">
<h2 class="post-title"><?php _e("هنوز نوشته‌ای منتشر نشده است", "site5framework"); ?></h2>
<div id="post-content">
<p><?php _e("متاسفیم، شما دنبال چیزی می‌گردید که اینجا نیست.", "site5framework"); ?></p>
</div>
</div>
</article>
<?php endif; ?>
</div>
<div class="column-two">
<?php get_sidebar('primary'); ?>
<?php if(is_single()) : ?>
<?php
$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 );
$args = array(
'posts_per_page' => 10,
'post__not_in' => array( get_the_id() ),
'category' => $cat_ids ,
'orderby' => 'DESC'
);
$related_query = new WP_Query( $args );
if ($related_query->have_posts()) :?>
<?php while($related_query->have_posts()) : $related_query->the_post();?>
<strong><a href="<?php the_permalink() ?>" title="ادامه نوشته <?php the_title_attribute(); ?>" target="_blank"> <?php the_title(); ?> </a></strong><br />
<?php
endwhile;
?>
<?php else : ?>
<p>مطلب مشابه پیدا نشد</p>
<?php
endif;
wp_reset_query();
?>
<?php endif;?>
</div><!-- end #column-two -->
<?php get_footer(); ?>

1- اگر لطف کنید در مورد همین حلقه یه راهنمایی بکنید، ممنون میشم ...

هنوز هم وقتی کد رو قرار میدم (یا به عبارتی همین کدهای بالا!) تمامی مطالب رو لیست میکنه و فقط مطالب دسته مربوط به مطلب در حال مشاهده نیست!

(من میخوام فقط مطالب مربوط به همون دسته باشه!)

2- با قرار دادن کد مرتب سازی بر اساس تاریخ، مطالب، جدید به قدیم (بالا به پایین) مرتب شدند.

برای مرتب سازی به صورت قدیم به جدید (بالا به پایین) چه چیزی باید تعریف بشه ؟!

(یعنی اولین عنوان قدیمی ترین مطلب در اون دسته و آخرین عنوان، جدیدترین مطلب در اون دسته باشه!)

تشکّر

ویرایش شده توسط omid_r
لینک به ارسال

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

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

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

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

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

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

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

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

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