2016-09-17 36 views
0

我试图强制在我的Woocommerce商店显示列表视图,但我似乎无法得到它的工作。追加查询参数到Woocommerce类别的URL

的主题有列表视图支持,您可以通过附加迫使它“?product_view=list”这样一类URL变为:

http://subliminalscience.com/product-category/icbch-hypnosis-certification/?product_view=list 

而不是默认的:

http://subliminalscience.com/product-category/icbch-hypnosis-certification/ 

我加入这个重写规则到我的htaccess但它不:

RewriteRule ^product-category(.*)$ http://subliminalscience.com/product-category$1?product_view=list 

看来Wordpress igno res这个重写规则。有任何想法吗?

+0

将rewriterule作为** WP规则上方的第一条规则**,但低于'RewriteEngine on'。 –

+0

@PanamaJack工作,谢谢! –

回答

0

我很惊讶这个答案是唯一的答案。

对.htaccess进行更改以强制这种行为看起来确实是不必要的,对于试图解决此问题的其他人来说显然没有用处,尤其是那些nginx服务器上的用户或不具有.htaccess访问权限的共享主机。

你应该尝试使用一个动作来解决这个问题。

看看你的问题,我可以告诉你的主题是检查URL栏中的GET数据,这是网址的?key1=value1&key2=value2部分。 GET is an HTTP method that you can read about here if you want to learn more.

你实际上可以在PHP中设置GET数据,并且你可以放心地把它放到你的functions.php文件中。

您将需要创建一个简单检查当前页面的函数,并且如果它是产品类别页面,则会设置GET数据。

在你的functions.php的底部,你要添加的东西是这样的:

<?php 
 
//Force all category pages to list view. 
 
add_action('woocommerce_before_main_content','force_category_list_view', 5); 
 
function force_category_list_view(){ 
 
    if(is_product_category()){ 
 
    $_GET['product_view'] = list; 
 
    } 
 
}; 
 
?>

其实我不能对此进行测试,但我认为它会工作。实质上,在woocommerce模板archive-product.php中,第一个运行的操作是'woocommerce_before_main_content'。我们正在做的是调用我们的函数,它检查页面确实是一个产品类别。如果是,它将GET变量设置为列表,这正是URL告诉页面已经做的事情。

这主要是一个比改变.htaccess更好的做法,但是有人确定也可以通过将URL更改为?product_view=list&product_view=xyz来覆盖GET数据。我无法想象在这种情况下这会是一个问题,但是在其他它可能是实例。