如何在WordPress中的自定义帖子类型上添加搜索功能

时间:2018-10-18 17:00:48

标签: wordpress custom-post-type

我已经在功能文件中注册了新的自定义帖子类型。之后,我创建了一个新模板,并在页面上分配了该模板。在下面的代码中,我使用两个显示自定义帖子类型的所有记录。

<?php
  $temp = $wp_query;
  $wp_query = null;
  $wp_query = new WP_Query();
  $wp_query->query('showposts=5&post_type=news'.'&paged='.$paged);

  while ($wp_query->have_posts()) : $wp_query->the_post();
?>

  <!-- LOOP: Usual Post Template Stuff Here-->

<?php endwhile; ?>

<nav>
    <?php previous_posts_link('&laquo; Newer') ?>
    <?php next_posts_link('Older &raquo;') ?>
</nav>

<?php
  $wp_query = null;
  $wp_query = $temp;  // Reset
?>

现在,我想添加一个搜索表单,该表单将用于搜索帖子标题并在同一页面中返回结果。我不知道该怎么做,所以有人可以帮助搜索。

2 个答案:

答案 0 :(得分:0)

您可以在函数中添加搜索过滤器,以过滤出您的自定义帖子类型。未经测试,但应该可以。

// Search Filter
add_filter('pre_get_posts','rusty_search_filter');
function rusty_search_filter($query) {
  if (!is_admin() && is_page('news')) {
    if ($query->is_search) {
      $query->set('post_type', array('news'));
    }
    return $query;
  }
}

答案 1 :(得分:0)

“您可以在WordPress搜索结果中包含自定义帖子类型” ,方法是在functions.php文件中添加以下代码。

 add_filter( 'pre_get_posts', 'tgm_io_cpt_search' );
    function tgm_io_cpt_search( $query ) {
        if ( $query->is_search ) {
           $query->set( 'post_type', array( 'post', 'news', 'products', 'portfolio') );
        }
        return $query;
    }

希望这对您有所帮助。