如何使用类别图标制作php post loop

时间:2017-10-09 23:03:38

标签: php wordpress

基本上,我正在研究自定义wordpress主题。我想要做的是为每个类别设置一个图标。如果循环开始并且帖子有一个类别,它将显示它已分配的图标。现在它显示正确的图标,但帖子的标题和exerpt不断更改为页面的名称。这是一个例子我有三个帖子数学,英语和历史都有正确的图标,但显示名称博客帖子页面而不是数学,英语或历史。

<?php /* Template Name: News Blog Page */ get_header(); ?>
<div id="blog-post-wrapper" class="section_wrapper">
<div class="column three-fourth">
    <?php $currentPage = get_query_var('paged');
        $args = array(
            'post_type' => 'post',
            'order' => 'DESC', 
            'posts_per_page' => 9,
            'paged' => $currentPage
        );
        $the_query = new WP_Query($args);
        if($the_query -> have_posts()): 
            while ($the_query -> have_posts()): $the_query -> the_post();
                get_template_part('postloopcontent', get_post_format());
            endwhile;
        echo "<div class='pagination'>";
           echo paginate_links(array(
                'total' => $the_query -> max_num_pages
            ));
        echo "</div>";
        endif;
    ?>
</div>
<div class="column one-fourth">
    <?php get_sidebar(); ?>
</div>
</div>
<?php get_footer(); ?>

最上面的一个是我的基本布局,它抓住了我的循环。最下面一个是我的循环

<?php

// Standard Post Format

?>



  <?php $bgImage = get_the_post_thumbnail_url(); ?>
  <div class="column one-third" style="background-image:url(<?php echo $bgImage; ?>);">

          <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" class="nws-img">
              <?php

                // Find the first category the post is in.
                $categories = get_the_category();
                $category = $categories[ 0 ]->term_id;

                $imgargs = array(
                    'cat' => $category,
                    'post_status' => 'inherit',
                    'post_type' => 'attachment',
                    'posts_per_page' => '1'
                );

                $imgquery = new WP_Query( $imgargs );

            if ( $imgquery->have_posts() ) {
                while ( $imgquery->have_posts() ) {  $imgquery->the_post();  ?>
                    <div class="category-featured-image">
                        <?php echo wp_get_attachment_image( $post->ID, 'thumbnail' ); ?>
                    </div>
                    <?php
                }
            }
            // Reset postdata to restore ordinal query.
            wp_reset_postdata();

        ?>
        </a>
    <div id="content-box">
        <h1> <a href="<?php the_permalink(); ?>" > <?php the_title(); ?> </a> </h1>
        <?php the_excerpt(); ?>
    </div>
</div>

1 个答案:

答案 0 :(得分:0)

在你的循环文件中,你正在wp_reset_postdata();循环/条件之外的帖子数据,即$imgquery。如果你可以将postdata rest函数包装在条件中,我认为这应该可行。

您的代码必须如下所示

<?php

// Standard Post Format

?>



  <?php $bgImage = get_the_post_thumbnail_url(); ?>
  <div class="column one-third" style="background-image:url(<?php echo $bgImage; ?>);">

          <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" class="nws-img">
              <?php

                // Find the first category the post is in.
                $categories = get_the_category();
                $category = $categories[ 0 ]->term_id;

                $imgargs = array(
                    'cat' => $category,
                    'post_status' => 'inherit',
                    'post_type' => 'attachment',
                    'posts_per_page' => '1'
                );

                $imgquery = new WP_Query( $imgargs );

            if ( $imgquery->have_posts() ) {
                while ( $imgquery->have_posts() ) {  $imgquery->the_post();  ?>
                    <div class="category-featured-image">
                        <?php echo wp_get_attachment_image( $post->ID, 'thumbnail' ); ?>
                    </div>
                    <?php
                }
                // Reset postdata to restore ordinal query.
                wp_reset_postdata();
            }

        ?>
        </a>
    <div id="content-box">
        <h1> <a href="<?php the_permalink(); ?>" > <?php the_title(); ?> </a> </h1>
        <?php the_excerpt(); ?>
    </div>
</div>