如何将搜索限制为帖子标题?

时间:2011-03-12 作者:Javier Villanueva

有没有办法将搜索限制为发布标题?我知道我可以修改查询。php核心文件,但必须有一种方法来使用钩子,对吗?

提前谢谢!

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

这里有一个过滤器可以解决这个问题。将其放入主题中functions.php 或插件。

/**
 * Search SQL filter for matching against post title only.
 *
 * @link    http://wordpress.stackexchange.com/a/11826/1685
 *
 * @param   string      $search
 * @param   WP_Query    $wp_query
 */
function wpse_11826_search_by_title( $search, $wp_query ) {
    if ( ! empty( $search ) && ! empty( $wp_query->query_vars[\'search_terms\'] ) ) {
        global $wpdb;

        $q = $wp_query->query_vars;
        $n = ! empty( $q[\'exact\'] ) ? \'\' : \'%\';

        $search = array();

        foreach ( ( array ) $q[\'search_terms\'] as $term )
            $search[] = $wpdb->prepare( "$wpdb->posts.post_title LIKE %s", $n . $wpdb->esc_like( $term ) . $n );

        if ( ! is_user_logged_in() )
            $search[] = "$wpdb->posts.post_password = \'\'";

        $search = \' AND \' . implode( \' AND \', $search );
    }

    return $search;
}

add_filter( \'posts_search\', \'wpse_11826_search_by_title\', 10, 2 );
大多数代码只是从WP_Query 类,但使用post_content LIKE\'s已删除。

UPDATE: 已删除已弃用like_escape() 自4.0以来

结束