在wordpress中使用in_category而不是query_posts

时间:2015-07-14 08:50:03

标签: php wordpress

在wordpress中,我有一个名为news的页面模板,我想显示一个类别的所有帖子 - “新闻”。我不想使用category.php,因为网站上已有一个庞大的博客。

 query_posts('cat=145');  
 while ( have_posts() ) : the_post();
 //do something
 endwhile; 

工作正常但我已经读过query_posts有缺点(比如速度)

我试过这样做,但它只是向我展示了什么:

while ( have_posts() ) : the_post();
if ( in_category( '145' ) ) : //also tried 'News'
//do something

为什么'in_category不能在这里工作?

4 个答案:

答案 0 :(得分:1)

您可以通过WP Query来实现您的要求。

文档:https://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters 例如:

var menusOnListElements = element.all(by.repeater('menu in menus').column('menu.name'))

this.isMenuListed = function(menu) {
    return menusOnListElements.each(function(element) {
        return element.getText().then(function (name) {
            if (menu.name === name) {
                return true; //this is executed
            }
        });
    });
};

答案 1 :(得分:1)

请尝试以下代码:

$args = array('post_type' => 'post',
        'tax_query' => array(
                array(
                        'taxonomy' => 'category',
                        'field'    => 'slug',
                        'terms'    => 'news'  // please pass here you news category slugs 
                    ),
                )
        );

    $loop = new WP_Query( $args );
    while ( $loop->have_posts() ) : $loop->the_post();
        print_r($post);
    endwhile;

    wp_reset_postdata();

答案 2 :(得分:0)

尝试使用get_posts()功能:

$get_p_args = array('category'=> 145,'posts_per_page'=>-1);

$myposts = get_posts( $get_p_args );
foreach ( $myposts as $post ) : setup_postdata( $post ); ?>
    <div>
        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
    </div>
<?php endforeach; 
wp_reset_postdata();?>

答案 3 :(得分:0)

尝试一下:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
global $wp_query;
$args = array_merge( $wp_query->query_vars, array(
    'post_type' => 'post', // You can add a custom post type if you like
    'paged' => $paged,
    'posts_per_page' => 6, // limit of posts
    'post_status' => 'publish',
    'orderby' => 'publish_date',
    'order' => 'DESC',
    'lang' => 'en', // use language slug in the query
) );
query_posts( $args );