最近发现WordPress站点的PHP日志多了很多,出现了很多警告日志,类似如下:2024-01-08 16:21:33.473787 [NOTICE] [424799] [113.142.198.146:34146#banzhuti.com] [STDERR] PHP Warning: Parameter 2 to bzt_search_by_title_only() expected to be a reference, value given in /home/www.banzhuti.com/wp-includes/class-wp-hook.php on line 324
2024-01-08 16:21:33.600870 [NOTICE] [424799] [113.142.198.146:34146#banzhuti.com] [STDERR] PHP Warning: Parameter 2 to bzt_search_by_title_only() expected to be a reference, value given in /home/www.banzhuti.com/wp-includes/class-wp-hook.php on line 324
2024-01-08 16:21:34.667165 [NOTICE] [424799] [112.240.58.146:14232#banzhuti.com] [STDERR] PHP Warning: Parameter 2 to bzt_search_by_title_only() expected to be a reference, value given in /home/www.banzhuti.com/wp-includes/class-wp-hook.php on line 324
2024-01-08 16:21:34.813151 [NOTICE] [424799] [112.240.58.146:14232#banzhuti.com] [STDERR] PHP Warning: Parameter 2 to bzt_search_by_title_only() expected to be a reference, value given in /home/www.banzhuti.com/wp-includes/class-wp-hook.php on line 324基本每时每刻不停的生成日志警告,奇怪了,这到底是什么回事呢?这里搬主题就分享一下PHP日志出现警告search_by_title_only() expected to be a reference的解决办法。经过搬主题分析,目前主要是因为搬主题设置了搜索只搜索标题出现的警告。之前的文章如下:
降低网站搜索时资源占用 实现WordPress默认只搜索文章标题教程4年前09980但是就是出现了这样的警告,虽然不影响使用,但是不断地出现警告信息,这咋整呢,经过搬主题分析,发现这个代码有错误。正确的应该是// WordPress按标题匹配搜索结果
// 搬主题www.banzhuti.com原创
add_filter('posts_search', 'bzt_search_by_title_only', 500, 2);
function bzt_search_by_title_only($search) {
global $wpdb, $wp_query;
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($wpdb->esc_like($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;
}替换后,警告消失了。
THE END