Php 向URL传递值以在wordpress中进行提前搜索时出错
我正在制作一个搜索功能,用于在Php 向URL传递值以在wordpress中进行提前搜索时出错,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我正在制作一个搜索功能,用于在woocommerce中搜索产品 所以URL将类似于“” 用户将搜索任何网站将被搜索,此外,产品的自定义字段将被搜索。此代码可以在以下情况下正常工作:“”http://localhost/wp/?s=123&post_type=product在url中输入,则表示未找到任何产品 代码如下所示 function cf_search_where( $where ) { global $pagenow, $wpdb; if ( is_search() ) {
woocommerce
中搜索产品所以URL将类似于“” 用户将搜索任何网站将被搜索,此外,产品的自定义字段将被搜索。此代码可以在以下情况下正常工作:“
”http://localhost/wp/?s=123&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' );
那么需要做什么修改呢
URL
workfine您在“”中编写$wpdb->posts,这就是它不起作用的原因。
你在下面检查一下
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' );
我肯定这不是问题所在。另一个提示是它在
?s=123
上工作,而在?s=123&post_type=product