搜索页面根据结果不同的标题

时间:2013-06-18 作者:user1888564

我有一个搜索页面,它是下面的代码,它根据用户搜索返回不同的帖子类型,是否有一种方法可以将以下标题添加到找到的每个帖子类型中-我尝试的所有内容都只会将其添加到每个项目中(我猜是循环)。

自定义帖子类型1结果-我需要添加的标题1-结果1可在此处找到

自定义帖子类型2结果-我需要添加的标题2-结果2可在此处找到

这是我当前的代码:

 <?php  if (is_search()) { ?>
    <?php if (get_post_type() == \'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   
    } else if (get_post_type() == \'type_2\') {
        //Do different styling
    }//endif
    else { }
        ?>

2 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

要使其工作,您需要按帖子类型对搜索结果进行排序。

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 链条

该代码应产生如下输出:

enter image description here

SO网友:Krzysiek Dróżdż

您在此处发布的当前代码仅在循环的一部分内。

如果要在搜索结果列表的顶部添加标题,必须找到显示此标题的模板部分。(应该是主题的search.php文件,但这取决于主题结构)。

结束

相关推荐

Get_Search_link()重定向到404模板页面

我构建了一个自定义主题,其中有一个404。php页面和搜索。php页面。在模板的其他地方,我想直接链接到搜索页面。因此,我使用get\\u search\\u template()函数来获取搜索页面链接,其结果如下:http://example.org/search当我单击链接时,我会被发送到404页面模板。为什么会转到404页面模板而不是搜索页面模板?