我正在使用此代码从Wordpress/WooCommerce网站搜索产品.
我的要求是URL将像" http:// localhost/wp /?s = D34&post_type = product "同时s=D34
是搜索字符串.
当用户搜索字符串时.将从所有默认字段+产品中搜索数据custom filed
.下面的代码可以正常使用http:// localhost/wp /?s = D34但是当&post_type=product
它与url连接时它会说
代码如下
function cf_search_where( $where ) { global $pagenow, $wpdb; if ( is_search() ) { $where = preg_replace("/\(\s*".$wpdb->posts.".post_title\s+LIKE\s*(\'[^\']+\')\s*\)/", "(".$wpdb->posts.".post_title LIKE $1) OR (".$wpdb->postmeta.".meta_value LIKE $1)", $where ); $where .= " AND ($wpdb->posts.post_type = 'product') "; } return $where; } add_filter( 'posts_where', 'cf_search_where' );
这是为了防止不同的值
function cf_search_distinct( $where ) { global $wpdb; if ( is_search() ) { return "DISTINCT"; //to prevent duplicates } return $where; } add_filter( 'posts_distinct', 'cf_search_distinct' );
那么需要进行哪些修改?
URL
http:// localhost/wp /?orderby = price&post_type =产品正常工作
但是http:// localhost/wp /?s = D34&post_type = product有什么问题