wordpress php按类别名称查询

时间:2015-01-19 09:27:02

标签: php wordpress

我想知道为单独的类别帖子做单独的博客页面。我能找到的是按类别编号运行查询,但这对我来说不够动态,因为我想在页面标题上运行查询,即=类别名称。

基本上在页面"事件"我想显示名为" 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; ?>

感谢任何见解,链接或通知。

2 个答案:

答案 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
    ) ,
);