自定义循环,将类别与页面匹配

时间:2011-10-14 作者:mehulkar

我想设置我的模板,以便页面显示一个类别slug与页面slug匹配的帖子列表。因此,在“关于我们”(“About”)的页面上,贴上了类别slug“About”的帖子。边栏应该显示这些帖子的列表(我需要硬编码,没有插件)。指数php应该显示所有帖子,不包括页面上显示的帖子。

这是一个自定义循环,生成我将添加到侧栏的最近帖子列表。php。这需要修改,以便只显示与页面匹配的类别中的帖子。

<ul>
<?php
query_posts( \'posts_per_page=5\' );
if ( have_posts() ) :
      while ( have_posts() ) : the_post();
    ?><li><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li><?php
endwhile;
endif;
wp_reset_query();
?>
</ul>
我试着尽可能清楚地解释,但有点混乱,所以请告诉我需要更清楚地解释什么。

3 个回复
SO网友:mrwweb

如果这是在一页。php(或类似)模板,然后使用query_posts() 这是个坏主意,可能会产生一些非常糟糕的后果。我也更喜欢WP_Query 结束get_posts() 因为它很容易让您使用模板标记,而且它明确存在于页面上运行二次循环。

<?php
global $post;
$my_query_args = array(
    \'posts_per_page\' => 5, // change this to any number or \'0\' for all
    \'tax_query\' => array(
        array(
            \'taxonomy\' => \'category\',
            \'field\' => \'slug\',
            \'terms\' => $post->post_name // this gets the page slug
        )
    )
);
// a new instance of the WP_query class   
$my_query = new WP_Query( $my_query_args );

if( $my_query->have_posts() ) : while( $my_query->have_posts() ) : $my_query->the_post(); ?>

    <li><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li>

<?php endwhile; endif; wp_reset_postdata(); ?>

SO网友:Scott

我假设您的页面slug与类别slug相同?无论如何,这是代码。这应该是不言而喻的。

<?php if(is_page()) : // check we are a page ?>
        <?php
        global $post;
        $cposts = get_posts("numberposts=5&category_name={$post->post_name}");
        if($cposts) : ?>
            <ul>
                <?php foreach($cposts as $cpost) : ?>
                    <li><a href="<?php echo get_permalink($cpost->ID) ?>"><?php echo $cpost->post_title; ?></a></li>
                <?php endforeach; ?>
            </ul>
        <?php endif; ?>
<?php endif; ?>

SO网友:user30998

这对我很有用,很简单:

<h1><?php single_cat_title(); ?></h1>

结束

相关推荐

Using the loop inside admin

我有以下问题:我正在为用户创建一个自定义元框,以便以友好的方式添加自定义字段我想生成一个下拉框,其中包含类别10下的所有帖子我在函数文件中创建了一个循环,用于检索我想要的帖子,并创建一个下拉选择列表。因此,当我转到“管理”->“帖子”并选择要编辑的帖子时,我会遇到以下问题:无论我选择哪个帖子,都会加载最后一篇帖子。以下是函数文件中使用的代码,然后在为自定义元框生成html代码时调用:function get_project_ids($proj_cat = 10) { $output