2016-09-17 37 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數據。我無法想象在這種情況下這會是一個問題,但是在其他它可能是實例。