如何在自定义域中搜索?

时间:2012-05-21 作者:p.a.

我有一个自定义的帖子类型,叫做法律。LAW有三个自定义字段:LAW\\u DATE、LAW\\u TEXT和LAW\\u AUTHOR。我想建立一个搜索页面,允许我独立搜索每个自定义字段。一、 e.每个领域的不同标准,相互结合和/或相互关联。

谢谢

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

以下函数需要放入函数中。php的模板代码。或者在插件中。

function custom_search_query( $request ) {
    $query = new WP_Query();  // the query isn\'t run if we don\'t pass any query vars
    $query->parse_query($request);

    $request[\'post_type\'] = \'LAW\';

    // this is the actual manipulation; do whatever you need here
    if(isset($_GET[\'search\']))
        $options = $_GET[\'search\'];
    if (!empty($options)) {
        $i = 0;
        $request[\'meta_query\'] = array(); // resetting any previously selected meta_queries that might "linger" and cause weird behaviour.
        // CAREFUL HERE ^ might not be desired behaviour

        foreach($options AS $key => $value) {
            $request[\'meta_query\'][$i][\'key\'] = $key;
            $request[\'meta_query\'][$i][\'value\'] = array($value);
            $request[\'meta_query\'][$i][\'compare\'] = \'IN\';
            $request[\'meta_query\'][$i][\'type\'] = \'CHAR\';
            $i++;
        }
    }

    return($request);
}
add_filter( \'request\', \'custom_search_query\' );
上述函数假定HTML表单与此类似:

<input type="text|number" name="search[keyname1]" value="value1" />
<input type="text|number" name="search[keyname2]" value="value2" />
它不会对用户输入进行验证(wordpress可能会做一些验证,但如果你这样做会更好)。

结束

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register