如何创建自定义搜索表单和处理程序?

时间:2013-12-27 作者:Leylu

我正在尝试构建一个搜索,根据用户在admin中选择的内容,该搜索将使用用户输入查询多个外部api搜索方法中的一个,将所有结果保存在数据库中,然后显示出来,或者搜索数据库中的自定义表,还应该完全封装在插件中。我已经有了这样做的业务逻辑,我很难将其连接到WP。实现这一目标的最佳方式是什么?

编辑:抱歉,这可能是一个非常模糊的问题,我有一个上面描述的基于php框架的应用程序,我想做的是将其移动到WP,问题是虽然逻辑本身需要很少修改,但我不知道如何通过插件将其连接到wordpress,从本质上讲,我如何使用插件创建表单,以及如何从表单中获取输入并将其引导到处理该请求的逻辑?

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

要更改搜索表单,请筛选get_search_form. 您可以在此处将表单作为字符串获取,并可以根据需要进行更改。

add_filter( \'get_search_form\', function( $form )
{
    // Replace the form, add additional fields
    return $form;
});
要将搜索查询更改为数据库,请筛选posts_search. 您以字符串形式获取查询,并且当前WP_Query 提供更多信息的对象。看见wp-includes/query.php 用于上下文。

add_filter( \'posts_search\', function( $search_query, $wp_query )
{
    // change the SQL
    return $search_query;
}, 10, 2 );
如果不想筛选搜索查询,请更改name 搜索表单中的属性,示例foo, 并检查$_POST 请求:

if ( ! empty ( $_POST[\'foo\'] ) )
{
    $global $wpdb;
    $results = $wpdb->get_results( /* custom sql */ );
}

结束

相关推荐

无法使用WP_QUERY将“Search Value”和“Tax_Query”组合在一起

这是我在模板函数中的函数。php。问题是这是可行的:function ajax_search_action_do(){ global $wp_query; $search = $_POST[\'search_value\']; $country = $_POST[\'country_value\']; $args = array( \'s\' => $search,