如何在没有插件的WordPress后台进行定制搜索?

时间:2014-05-12 作者:user3598584

我有一个名为usr\\u jardin的帖子类型,其中有一个名为sim\\u nuip的自定义字段。我想让搜索工作的标题的职位,也由自定义字段。我试过了,但没用。

function searchfilter($query)
{
    $custom_fields = array("_post_title", "nuip");
    $searchterm = $query->query_vars[\'s\'];
    $query->query_vars[\'s\']="";

    if($searchterm != "")
    {
        $meta_query = array(\'relation\' => \'OR\');

        foreach($custom_fields as $cf)
        {
            array_push($meta_query, array(\'key\'=> $cf,\'value\'=> $searchterm,\'compare\'=> \'LIKE\'));
        }

        $query->set("meta_query", $meta_query);
    }

    if($query->is_search)
    {
        $query->set(\'post_type\', array(\'post\', \'usr_jardin\'))
    }
    return $query;
}

add_filter(\'pre_get_posts\',\'searchfilter\');
add_action(\'save_post\',\'add_title_custom_field\');

function add_title_custom_field($postid){
    update_post_meta($postid, "_post_title", $_POST["post_title"]);
}

1 个回复
SO网友:danielck

pre_get_posts 是一个操作,而不是筛选器。更改此项:

add_filter(\'pre_get_posts\',\'searchfilter\');
对此:

add_action(\'pre_get_posts\',\'searchfilter\');
您也不需要返回$query.

请参阅pre\\u get\\u post文档:http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts

结束