如何显示带有特定标签的帖子

时间:2014-09-04 15:24:07

标签: php html wordpress

我真的很挣扎,我确信这是一个简单的问题。我似乎无法获得属于某个标签的帖子显示在该标签页面上,即:(/ tag / blog /)博客是标签。

到目前为止,在Wordpress的Official Tag Templates页面之后,我仍然无法使其正常运行。

我不需要heirarchy所以tag.php工作正常。使用single_tag_title(),它会正确显示页面顶部的标记。

Official Tag Templates的其余部分并没有真正提供更多细节,我可以使用默认循环或自定义循环。我已尝试使用如下所示的自定义,但这不起作用。 (我把它保持在最低限度,目前还不担心造型。)

<?php get_header(); ?>
<p>Tag: <?php single_tag_title(); ?></p>
<div class="container">
    <div id="content" class="clearfix row">
        <div id="main" class="col col-lg-8 clearfix blog-page-padding" role="main">
            <?php 
                if ( have_posts() ) :
                    while ( have_posts() ) :
                        the_title();
                    endwhile; // end while
                endif; // end if
            ?>
        </div> <!-- end #main -->
    <?php get_sidebar('blog'); // Blog ?>
    </div> <!-- end #content -->
</div>
<?php get_footer(); ?>

所以这段代码目前确实显示了标签的标题,但没有显示我想要发布的帖子的标题。

提出问题。 “我如何显示属于特定标签的帖子。”

3 个答案:

答案 0 :(得分:0)

你并没有告诉循环在任何地方寻找那个特定的标签......你所做的只是在页面顶部显示当前选定的标签。在您的循环中添加PHP if语句以获取具有该标记的帖子:

<?php get_header(); ?>     // Get the header

<p>Tag: <?php single_tag_title(); ?></p>     // Display the tag name

<div class="container">
    <div id="content" class="clearfix row">
        <div id="main" class="col col-lg-8 clearfix blog-page-padding" role="main">


            <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> // Start your loop

                    <?php if(tag_slug( ' THE SLUG ' ) ) : ?> // Look for the tag
                           // Post HTML stuff
                    <?php endif; ?>

                <?php endwhile; endif ?> // finish the loop

        </div> <!-- end #main -->
    <?php get_sidebar('blog'); // Blog ?>
    </div> <!-- end #content -->
</div>
<?php get_footer(); ?>

This page from the Codex提供了如何抓取类别和标签的示例。

答案 1 :(得分:0)

你只需要the_post()函数,你必须在while内部调用它,它应该是你调用的第一个函数,因为它会加载模板标记。

<?php 
                if ( have_posts() ) :
                    while ( have_posts() ) : the_post();

                        the_title();
                    endwhile; // end while
                endif; // end if
            ?>

如果标签只是在自定义帖子类型中使用,你应该向你添加这样的函数.php:

add_action( 'pre_get_posts', 'custom_function' );

function custom_function($query){
  if(! is_admin()){
    if(is_tag()){
        $query->set('post_type', array('your_post_type', 'your_other_post_type', 'post'));
    }
  }

}

答案 2 :(得分:0)

我发现由于是自定义帖子类型,我不得不使用WP Query循环来引入它们。

<?php if ( is_tag() ) {$term_id = get_query_var('tag_id'); $taxonomy = 'post_tag'; $args ='include=' . $term_id; $terms = get_terms( $taxonomy, $args );} ?>
            <!-- This gets the tags slug  -->

<?php $query = new WP_Query(array( "post_type" => array('blog', 'portfolio'), "tag" => $terms[0]->slug   ) ); while ($query->have_posts()) : $query->the_post(); ?>

        <?php the_title(); ?>
<?php endwhile; ?>