Dec04

wordpress 仅搜索标题插件

wplogo-5

有时候,我们仅仅需要wordpress搜索标题,我在stackexchange找到一段代码,填入function立即生效,可惜当时忘记记下原问题了。

可是,后来偶尔我自己希望可以来个全文搜索,但是每次修改function.php是多么的难过,我试图用子主题解决,可是发现子主题无能为力。后来转而希望变成插件,当我需要的时候,只要停用这个功能即可,于是有了这个“插件”。

不过你可以简单地把下面代码插入function.php永久实现只搜索文章标题,不搜索文章内容。

<?php
function __search_by_title_only( $search, &$wp_query ){
	global $wpdb;
	if ( empty( $search ) )
		return $search;
	$q = $wp_query->query_vars;
	$n = ! empty( $q['exact'] ) ? '' : '%';
	$search =
	$searchand = '';
	foreach ( (array) $q['search_terms'] as $term ) {
		$term = esc_sql( like_escape( $term ) );
		$search .= "{$searchand}($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
		$searchand = ' AND ';}
	if ( ! empty( $search ) ) {
		$search = " AND ({$search}) ";
		if ( ! is_user_logged_in() )
			$search .= " AND ($wpdb->posts.post_password = '') ";}
	return $search;}
add_filter( 'posts_search', '__search_by_title_only', 500, 2 );
?>
[/php]

“插件”下载:

番外:在启动插件时候启用插件时,会出现错误提示,“The plugin generated xxxx characters of unexpected output during activation”,中文提示为“这个插件在启用的过程中产生了 XXXX 个字符的异常输出。如果您遇到了“headers already sent”错误、联合 feed(如 RSS)出错等问题,请尝试禁用或移除本插件”。

当时我就懵了,搜索了半天好像很复杂的样子,只是我这里最后只是简单地把一些没必要的空格、回车删掉,用tab换掉空格就OK了。

Comments are closed.