amostajo/wordpress-search-typeahead

Wordpress 搜索 Typeahead 扩展插件,适用于 Wordpress 开发模板。

v1.0.0 2015-11-20 02:12 UTC

This package is auto-updated.

Last update: 2024-09-21 20:10:38 UTC


README

Latest Stable Version Total Downloads License

仅适用于Wordpress 插件模板Wordpress 主题模板的附加包。

Typeahead将 Twitter 的 typeahead 集成到 wordpress 中,提供了一种灵活的方式来添加定制的搜索功能。

安装

此包需要Composer

将其添加到位于模板根目录的composer.json文件中

"amostajo/wordpress-search-typeahead": "1.0.*"

然后运行

composer install

composer update

下载包及其依赖项。

在模板中配置

在您的模板配置文件中的addons数组选项中添加以下字符串行。

    'Amostajo\Wordpress\TypeaheadAddon\Typeahead',

这应该添加到

  • config\plugin.php在 Wordpress 插件模板中
  • config\theme.php在 Wordpress 主题模板中

使用方法

在模板中

在您的模板中调用typeahead_search()函数,如下所示

<div class"search">
    <?php typeahead_search() ?>
</div>

更改过滤器

Typeahead 使用 WP_Query 获取文章,您可以通过以下方式修改搜索结果

<div class"search">
    <?php typeahead_search( [ 'post_type' => 'product' ] ) ?>
</div>

钩子

过滤器: addon_typeahead_query 默认过滤传递给 WP_Query 的参数。

add_filter( 'addon_typeahead_query', 'filter_query' );

function filter_query ($args) {
    // Array modifications
    $args['post_type'] = 'product';
    $args['posts_per_page'] = 10;

    // Array is expected in return
    return $args;
}

过滤器: addon_typeahead_post 过滤 WP_Query 返回的每个 WP_Post 对象。如果未修改,则附加包将把文章结果转换为 Post 模型(位于此包中)。

add_filter( 'addon_typeahead_post', 'filter_post' );

function filter_post ($post) {

    // Transformation of post into custom model
    $model = new MyModels\CustomPost();

    // Array is expected in return
    return $model->from_post( $post )->to_array();
}

过滤器: addon_typeahead_data 过滤最终结果。接收数据作为数组以及搜索参数(用于 WP_Query 的那些)。

add_filter( 'addon_typeahead_data', 'filter_data' );

function filter_data ($data, $args) {

    // Adding custom records in results
    if ( $args['post_type'] != 'product' ) {
        // Adding extra product
        $data[] = MyProduct::find(999)->to_array();
    }

    // Array is expected in return
    return $data;
}

定制

所有位于views文件夹中的视图都可以在您的主题中进行自定义。将它们复制并粘贴到您的主题中(与插件视图相同)并修改它们。

需要考虑的事项

<input type="text"
    id="search-typeahead"
    name="s"
    placeholder="Search..."
    class="default"
    data-hint="1"
    data-highlight="1"
    data-source="<?php echo $source_url ?>"
    data-template-empty="<?php echo $template_empty ?>"
    data-template-suggestion="<?php echo $template_suggestion ?>"
    data-onselect="1"
/>

data-onselect将使选择的结果重定向到文章的永久链接。

尽量保持其他data属性,如有需要则修改它们。

编码指南

编码是 PSR-2 和 Wordpress PHP 指南的混合。

许可证

搜索 Typeahead是免费软件,根据 MIT 许可证的条款分发。