返回》

PHP日志出现警告search_by_title_only() expected to be a reference的解决办法

最近发现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