我想知道为单独的类别帖子做单独的博客页面。我能找到的是按类别编号运行查询,但这对我来说不够动态,因为我想在页面标题上运行查询,即=类别名称。
基本上在页面"事件"我想显示名为" events"(类别名称==页面标题)等类别的博客帖子,等等。
任何有关如何实现这一目标的见解都会很棒。我试图做的和失败的是:
<?php query_posts('category_name='.get_the_title()); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div>
<h1><?php the_title(); ?></h1>
<p><?php the_content(); ?></p>
</div>
<?php endwhile; else: ?>no match<?php endif; ?>
感谢任何见解,链接或通知。
答案 0 :(得分:2)
您可以使用get_post
功能。
这样做:
<?php
$args = array( 'posts_per_page' => 5, 'offset'=> 1, 'category' => 1 );
$myposts = get_posts( $args );
foreach ( $myposts as $post ) : setup_postdata( $post ); ?>
<div>
<h1><?php the_title(); ?></h1>
<p><?php the_content(); ?></p>
</div>
<?php endforeach;
wp_reset_postdata();
?>
如果您需要进一步的帮助,请告诉我。
答案 1 :(得分:1)
首先,永远不要使用query_posts
。它会破坏主要查询,重新运行会降低页面速度的查询,错误地设置插件使用的重要功能,get_queried_object()
等功能会混淆分页。
如果您需要运行自定义查询,请使用WP_Query
。
要解决原始问题,默认类别参数不使用类别名称,只使用slugs和ID。 slu are是可控的,因此您可能希望使用带有category_name
参数的slugs。
如果确实需要传递类别名称,那么您应该使用tax_query
接受传递给terms
参数的名称
您可以使用参数传递以下内容
'tax_query' => array(
array(
'taxonomy' => 'category',
'field' => 'name'
'terms' => 'name of your category',
'include_children' => false
) ,
);