修改代码以显示多个blurb

时间:2016-03-09 15:08:42

标签: php wordpress custom-post-type

以下代码适用于WordPress书店网站,该网站在每个书页上输出关于作者的模糊信息,从相应的作者页面中提取内容。它在大多数情况下工作正常,除非有多个作者,它只显示一个作者(有时不是主要作者)。

有没有办法对它进行修改,以便如果有多个作者,它会为所有作者显示模糊?

谢谢!

<?php if ( is_single() ) { ?>
<div class="featured-author">
  <div class="widget widget_lpcode">
     <h2 class="widget-title">About the Author</h2>
     <div class="textwidget">
        <?php
           $authors = array();
           $parents = array(
               'Author' => 35
           );
           $categories = get_the_terms( $post->ID, 'product_cat' );
           foreach( $parents as $parent_name => $parent_id ):
               foreach( $categories as $category ):
                   if( $parent_id == $category->parent ):
                       $authors[] = $category->slug;
                   endif;
               endforeach;
           endforeach;

           $custom_query = new WP_Query( array( 'post_type' => 'authors','post_name__in' => $authors,'posts_per_page' => '-1' ) );  

           if($custom_query->have_posts()) : 
                while($custom_query->have_posts()) : 
                   $custom_query->the_post();
           ?>
        <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
           <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail('thumbnail'); ?></a>
           <header class="entry-header">
              <h1 class="entry-title"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a></h1>
           </header>
           <div class="entry-content">
              <p><?php get_the_content_limit(115, ''); ?></p>
              <p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>" class="more">More</a></p>
           </div>
        </article>
        <?php
           endwhile;
           else: 
           ?>
        Not Found.
        <?php
           endif;
           ?>
     </div>
  </div>
</div>

1 个答案:

答案 0 :(得分:1)

您目前正在遍历每个类别,然后将相同的$ author变量分配给该类别的slug,因此如果有多个类别,您每次都会覆盖该$ author变量,并且最终会等同最后的结果。

首先,建立一个空白作者数组:

$authors = array();

然后,在foreach循环中,将结果添加到该数组:

$authors[] = $category->slug;

最后,在$ custom_query WP_Query参数中,您需要更改查找帖子的方式,因为'name'参数只接受一个slug。在WP 4.4中,有一个新的post_name__in参数接受一个数组,因此您可以使用

'post_name__in' => $authors,

如果您不能使用WP 4.4,则必须获取authors数组中每个帖子的ID,然后使用接受ID数组的post__in参数。

另外,将'posts_per_page'参数从1更改为-1,以便显示所有结果。