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

AI 智能摘要
基本每时每刻不停的生成日志警告,奇怪了,这到底是什么回事呢?这里搬主题就分享一下PHP日志出现警告search_by_title_only() expected to be a reference的解决办法。
图片[1]-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按标题匹配搜索结果
// 搬主题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
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容