📜  wordpress 搜索代码 (1)

📅  最后修改于: 2023-12-03 15:06:01.325000             🧑  作者: Mango

WordPress搜索代码介绍

WordPress搜索是网站中必不可少的功能之一。搜索功能可以帮助用户快速找到自己需要的文章或页面。而一个好的搜索功能往往要依靠优秀的代码实现。在本篇文章中,我们将介绍在WordPress中实现搜索功能所需要的代码片段。

搜索表单

首先,我们需要在网站中添加一个搜索表单。在WordPress中,可以使用get_search_form()函数获取搜索表单的HTML代码。

<?php get_search_form(); ?>

但这种方式所生成的HTML代码可能无法满足我们的需求,因此我们可以使用自定义的搜索表单。

<form role="search" method="get" id="searchform" action="<?php echo home_url('/'); ?>">
    <input type="text" value="" name="s" id="s" placeholder="Search...">
    <input type="submit" id="searchsubmit" value="Search">
</form>

上面的代码中,home_url()函数会返回网站的主页地址,s是查询参数,placeholder属性定义了输入框的提示文字。

搜索结果页

在WordPress中,搜索结果页的默认模板是search.php。当用户在搜索框中输入关键字并提交时,WP会自动使用该模板呈现搜索结果。

<?php if (have_posts()) : ?>
    <h2 class="page-title"><?php printf(__('Search Results for: %s', 'textdomain'), get_search_query()); ?></h2>

    <?php while (have_posts()) : the_post(); ?>
        <!-- The loop -->

    <?php endwhile; ?>

    <?php else : ?>

        <h2 class="page-title"><?php _e('Nothing Found', 'textdomain'); ?></h2>
        <p><?php _e('Sorry, but nothing matched your search criteria. Please try again with some different keywords.', 'textdomain'); ?></p>
        <?php get_search_form(); ?>

<?php endif; ?>

上面的代码会先判断是否有搜索结果。若有,则输出搜索关键字及搜索结果;若没有,则输出提示信息以及搜索表单。

自定义搜索结果模板

如果想要修改默认的搜索结果模板,可以使用PHP或者WP的模板标签来实现。以下是一些常见的模板标签:

the_title()

输出当前文章或页面的标题。

<h2 class="entry-title"><a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
the_excerpt()

输出当前文章或页面的摘要。

<div class="entry-summary">
    <?php the_excerpt(); ?>
</div>
the_content()

输出当前文章或页面的正文内容。

<div class="entry-content">
    <?php the_content(); ?>
</div>
get_the_post_thumbnail()

输出当前文章或页面的特色图片。

<?php if ( has_post_thumbnail() ) : ?>
    <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
        <?php echo get_the_post_thumbnail(); ?>
    </a>
<?php endif; ?>
自定义搜索查询

如果要想对搜索页面的查询结果进行自定义排序、排除某些类型的内容等操作,可以使用WP提供的过滤器pre_get_posts来实现。以下是一个例子:

function custom_search_filter($query) {

    if ( ! is_admin() && $query->is_search() && $query->is_main_query()) {

        // 排除某些类型的内容
        $query->set('post_type', array('post', 'page'));

        // 自定义按发布时间降序排列
        $query->set('orderby', 'date');
        $query->set('order', 'DESC');

    }

}

add_action('pre_get_posts', 'custom_search_filter');

上面的代码会排除attachment类型的内容,并按发表时间降序排序。

到此为止,我们已经介绍了在WordPress中实现搜索功能所需要的基本代码片段。希望这篇文章对您有所帮助。