以下代码适用于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>
答案 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,以便显示所有结果。