php 在Dokan供应商商店页面中使用Woof显示产品筛选器

ggazkfy8  于 2022-10-30  发布在  PHP
关注(0)|答案(1)|浏览(127)

最近,我正在研究如何在Dokan供应商商店页面显示正确的产品过滤器(带低音炮插件),但我找不到任何解决方案。
这是我试过但没有成功的方法:

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过滤器,而不是供应商的产品过滤器,所以我的客户当检查过滤器返回空页面。

nukf8bse

nukf8bse1#

我终于把它修好了。
也许不是最好的解决方案,但它是:首先,我们检查是否有一个url匹配(供应商商店页面的url),如果有,添加一个操作和一个过滤器
该操作获取当前供应商存储页面的供应商ID并将其存储在会话数据中。2过滤器用当前供应商的值预先填充woof中的作者过滤器。
工作正常,除了价格筛选器(最大值取自该类别中的所有产品,包括其他供应商的产品)。

//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;
}

}

相关问题