Wordpress отображает сообщения категории ID
Не могу найти правильный ответ на то, что я думал, будет тривиальным.
У меня есть несколько категорий, расположенных следующим образом...
Родительская категория 1
- Детская категория 1
- Детская категория 2
- Детская категория 3
... и у меня есть несколько постов в дочерней категории 2. Я хочу, чтобы на моей странице отображались все посты из категории, в которой я сейчас нахожусь.
Вот чем я сейчас занимаюсь:
<?php
query_posts('cat=2&showposts=10');
if (have_posts()) : while (have_posts()) : the_post(); ?>
<div class="timeline">
<h3><?php the_title(); ?></h3>
<?php the_content();?>
<?php endwhile; else: ?>
<?php _e('No Posts Sorry.'); ?>
<?php endif; ?>
</div>
Как вы видите, мне нужно вручную указать категорию (cat=2), но вместо этого я хочу, чтобы она автоматически определяла категорию, в которой я уже находилась, и отображала сообщения (таким образом, если я нахожусь в другой категории, она будет отображаться эти посты).
Какие-либо предложения?
Заранее спасибо. (Сообщество SO = Awesome Соус).
6 ответов
Попробуйте ниже код:
<?php
$current_cat_id = get_query_var('cat');
$showposts = 10;
$args = array('cat' => $current_cat_id, 'orderby' => 'post_date', 'order' => 'DESC', 'posts_per_page' => $showposts,'post_status' => 'publish');
query_posts($args);
if (have_posts()) : while (have_posts()) : the_post(); ?>
<div class="timeline">
<h3><?php the_title(); ?></h3>
<?php the_content();?>
<?php endwhile; else: ?>
<?php _e('No Posts Sorry.'); ?>
<?php endif; ?>
</div>
Если вы используете category.php
Вы можете опустить query_posts
и он будет автоматически заполнять сообщения для вас.
<?php
// Start the loop.
$categories = get_categories('child_of=1');//Parents category id
foreach ($categories as $cat) {
$option = '<a href="/category/archives/'.$cat->category_nicename.'">';
$option .= $cat->cat_name;//parents sub category name
$option .= '</a>';
echo $option;
query_posts('cat=$cat->cat_ID&showposts=10');
if (have_posts()) : while (have_posts()) : the_post(); ?>
<h3><?php the_title(); ?></h3>
<?php the_content();?>
<?php endwhile; else: ?>
<?php _e('No Posts Sorry.'); ?>
<?php endif; }?>
Пытаться
$args = array( 'posts_per_page' => 5, 'offset'=> 0, 'cat' => 1 );
<ul>
<?php
global $post;
$args = array( 'posts_per_page' => 5, 'offset'=> 0, 'category' => 1 );
// 1 is a cat id.
//
$myposts = get_posts( $args );
foreach( $myposts as $post ) : setup_postdata($post); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endforeach; ?>
</ul>
Попробуйте, это лучшее решение для этого, и вы также можете использовать его, чтобы показать похожие сообщения по идентификатору категории...
Просто вызовите функцию, упомянутую ниже, используя эту строку. Поместите это в свой шаблон или файл page.php / single.php.
Позвоните, поставив эту строку: related_post_title('enter cat id here..');
Вот функция и положить это в function.php
файл.
Функция связанных постов:
function related_post_title($cat_id){
$cat = $cat_id;
// Check if it is page only
if ( is_page() || is_single()) {
$args=array(
'cat' => $cat,
'order' => DESC,
'orderby' => rand,
'post__not_in' => array($post->ID),
'posts_per_page' => 9999,
'caller_get_posts' => 1
);
$my_query = null;
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
echo ' <ul> ';
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php
endwhile;
echo '</ul>';
}
wp_reset_query();
}
}
Если какой-либо запрос, пожалуйста, дайте мне знать, я помогу вам...