在 Dokan 供应商商店页面中使用 Woof 显示产品过滤器



最近我正在研究如何在 Dokan 供应商商店页面中显示正确的产品过滤器(使用 woof 插件(,但我找不到任何解决方案.
这是我尝试过的,但没有奏效:

function woof_modify_query( $query ) {

// Check we're on a /shop page before filtering the product query.
if( dokan_is_store_page() ) {

$store_user = dokan()->vendor->get( get_query_var( 'author' ) );
$query['woof_author'] = $store_user->id;
return $query;
}
}
add_action( 'woof_products_query', __NAMESPACE__.'woof_modify_query' );

问题是 woof 插件在 wooCommerce 中一切正常,但在供应商商店页面中,woof 显示所有存在的 wooCommerce 过滤器,而不是供应商产品过滤器,所以我的客户在检查过滤器时返回空白页面。

我终于得到了这个工作。

可能不是最好的解决方案,但这里是: 首先我们检查是否有网址匹配(供应商商店页面的网址(, 如果有,请添加操作和筛选器

该操作将获取当前供应商商店页面的供应商 ID,并将其存储在会话数据中。筛选器按当前供应商的值预填充作者筛选器。

除价格筛选器外,工作正常(最大值取自该类别中的所有产品,包括来自其他供应商的产品(。

//Build URL : Check if http or https
if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on')   
$url = "https://";   
else  
$url = "http://";   
//Build URL :  Append the host(domain name, ip) to the URL.   
$url.= $_SERVER['HTTP_HOST'];   
//Build URL :  Append the requested resource location to the URL   
$url.= $_SERVER['REQUEST_URI'];    

//Check for vendor store url, Add action and filter if URL matches  
if (strpos($url, "yourdomain.com/vendor")!==false){
add_action( 'woocommerce_before_main_content', 'grabvendorid' );
add_filter('woof_get_request_data', 'my_woof_get_request_data');

function grabvendorid(){
$store_user = dokan()->vendor->get( get_query_var( 'author' ) );
$vendor_id = $store_user->get_id();
$_SESSION['storeid'] = $vendor_id ;
}

function my_woof_get_request_data($request){
$request['woof_author'] = $_SESSION['storeid'];
return $request;
}
}

最新更新