我会尝试一些不同的方法。
我会将帖子类型数组移动到新的WP\\U查询中(因为您使用的是有限的定义集),然后在第一个foreach语句中循环遍历每个帖子类型的下面,我会设置第二个查询,以获取每个$类型中找到的所有帖子。如果需要访问非标准postdata(即自定义元数据),请使用global$post,否则不需要它。
这样您就可以使用\\u permalink。
修改新的WP\\U查询,如下所示:
$search_query = new WP_Query(
array(
\'posts_per_page\' => -1,
\'s\' => esc_attr($_GET[\'s\']),
\'post_status\' => \'publish\',
\'post_type\' => array( \'post\', \'page\', \'glossary\' )
)
);
然后,您可以在搜索结果列表中直接删除开头div下方的所有内容,只需跳到以下内容:
foreach($types as $type) :
echo \'<ul class="\' . $type . \'">\';
while( have_posts() ) {
the_post();
if( $type == get_post_type() ){ ?>
<div class="entry-content">
<?php if ( has_post_thumbnail() ) { ?>
<a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( esc_html__( \'Permalink to %s\', \'quark\' ), the_title_attribute( \'echo=0\' ) ) ); ?>">
<?php the_post_thumbnail( array(100,100) ); ?>
</a>
<?php } ?>
<?php the_excerpt(); ?>
<?php
}
rewind_posts();
echo \'</ul>\';
endforeach;
?>
或者,如果您想保持WP新的内容/模板组织方式,您可以为每种帖子类型提供单独的模板部分,并提供自己的样式选项等。
echo \'<ul class="\' . $type . \'">\';
while( have_posts() ) {
the_post();
if( $type == get_post_type() ){
get_template_part(\'content\', \'search\' . $type);
}
rewind_posts();
echo \'</ul>\';
endforeach;