要使其工作,您需要按帖子类型对搜索结果进行排序。
function order_by_pt($where,$qry) {
if (is_main_query() && $qry->is_search()) {
global $wpdb;
$where = $wpdb->posts.\'.post_type DESC\';
}
return $where;
}
add_action(\'posts_orderby\',\'order_by_pt\',1,2);
如果我能理解你的意思,那么像这样的循环可以实现你想要的。
$type_title = \'\';
while (have_posts()) {
the_post();
// this is where the title is checked and printed
if (get_post_type() !== $type_title) {
$type_title = get_post_type();
echo \'<h2>Custom Post Type "\'.$type_title.\'" Results</h2>\';
}
// switches are neater than a bunch of if/ifelses :)
switch (get_post_type()) {
case \'type_1\' :
//Style type_1 ?>
<div id="type_1" <?php post_class(); ?>>
<div id="file-loader">
<a href="<?php echo get_content_link( get_the_content() ); ?>">
<?php the_post_thumbnail(180, 230); ?>
</a>
</div>
<div id="file-hover"></div>
<h4>
<a href="<?php echo get_content_link( get_the_content() ); ?>"><?php the_title(); ?></a>
</h4>
</div><?php
break;
case \'type_2\' :
//Do different styling
echo \'<p>\',the_title(),\'</p>\';
break;
case \'some-other-type\' :
break;
}
}
我格式化了您的代码,将其设置为循环,并使用
switch
而不是
if/else
链条
该代码应产生如下输出: