【问题标题】:Search for product titles only - WooCommerce仅搜索产品标题 - WooCommerce
【发布时间】:2018-08-28 03:45:48
【问题描述】:

我有一个搜索功能,目前使用产品文本和所有内容搜索产品等。我希望它只搜索产品标题。我已经使用了这段代码,它已经工作了很多年,但现在已经不行了。现在我得到一个错误。为什么?

functions.php 中使用的代码

<?php
// Search titles only 
function __search_by_title_only( $search, &$wp_query )
{
    global $wpdb;
    if(empty($search)) {
        return $search; // skip processing - no search term in query
    }
    $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;
}
add_filter('posts_search', '__search_by_title_only', 500, 2);

错误

警告:__search_by_title_only() 的参数 2 应为参考,在线 /customers/7/a/4/nemoko.dk/httpd.www/wp-includes/class-wp-hook.php 中给出的值286

【问题讨论】:

    标签: php wordpress search woocommerce


    【解决方案1】:

    function __search_by_title_only( $search, &amp;$wp_query )
    第二个参数以 & (&$wp_query) 开头,这意味着它需要引用变量作为参数。

    posts_search 过滤器传递WP_Query $this 对象。所以只需删除参数中的 &amp;

    例子:

    function __search_by_title_only( $search, $wp_query )

    【讨论】:

    • @eMikkelsen 只需删除函数参数中的 & 符号并尝试。
    猜你喜欢
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    • 2016-08-07
    • 1970-01-01
    相关资源
    最近更新 更多