2015-05-01 219 views
1

對不起,我的近似英語。我想更改特定產品類別的woocommerce的產品頁面樣式(不顯示圖片和其他重要的佈局更改)。已經做到了,它的工作原理,問題是我想要在單個頁面上顯示這些產品。我嘗試使用woocommerce集成短代碼[product_page id = $ id],問題是我在content-single-product.php(在woocommerce文件夾中)創建的自定義樣式和佈局未使用此簡碼應用。我試圖在class-ws-shortcodes.php(woocommerce文件夾)上覆制我的腳本,但它沒有奏效。我應該如何在特定頁面上顯示產品,以及這些產品頁面的真實風格(我創建的自定義風格),而不是woocommerce簡碼。Woocommerce更改產品風格並將其顯示在頁面上

預先感謝您的回答

+0

請參閱https://stackoverflow.com/help/how-to-ask。 – skyline75489

+0

查詢網址:https://wordpress.org/support/topic/product-page-11它可能會幫助你 –

+0

感謝您的回答,我試着用您的解決方案替換產品類別ID中的term_id,並將「single-product-seperateCategory」通過「單品定製」(我的類別名稱和PHP文件複製到主題文件夾中)但它沒有爲我工作 – Ben

回答

2

有兩種方法來達到這個目的,它只是取決於你是否想要編輯single-product.phpcontent-single-product.php。兩者都會讓你達到相同的最終結果。

要做到前者,你可以使用默認的WordPress的功能,並通過template_include

add_filter('template_include', 'so_29984159_custom_category_template'); 
function so_29984159_custom_category_template($template){ 
    if (is_single() && get_post_type() == 'product' && has_term('custom_category', 'product_cat')) { 
     $template = locate_template('single-product-custom.php'); 
    } 
    return $template; 
} 

給定條件下過濾模板,或者,如果你寧願創建一個自定義content-product.php模板的一部分,你可以使用WooCommerce的wc_get_template_part這以幾乎相同的方式工作。 從技術上講,我認爲你可以使用相同的條件邏輯,但我在這裏調整它來指出WooCommerce在過濾器中提供的變量。

add_filter('wc_get_template_part', 'so_29984159_custom_content_template_part', 10, 3); 
function so_29984159_custom_content_template_part($template, $slug, $name){ 
    if ($slug == 'content' && $name == 'product' && has_term('custom_category', 'product_cat')) { 
     $template = locate_template('content-product-custom.php'); 
    } 
    return $template; 
} 

在這兩種情況下,single-product-custom.phpcontent-product-custom.php將是你的主題的根文件夾。要將它們放在其他地方,只需更改locate_template()參數中的路徑。

+0

我會檢查出這個詳細的答案,希望它能工作 – Ben

+0

我沒有測試任何東西,所以要小心流浪;或),但我認爲這個想法應該起作用。 – helgatheviking

+0

我的自定義模板製作得不好(直接編輯content-single-product.php),所以我創建了一個content-single-product-custom.php文件。 而我取代了wc_get_template_part('content','single-product');在single-product.php中加載名爲custom的類別的模板。 組織更好但結果相同:example.com/product/myproduct(產品頁面)顯示帶有自定義模板的產品,但woocommerce product_page短碼不顯示。 您的代碼:不知道我應該在哪裏添加這個過濾器(模板加載器文件?)不用於鉤子和過濾器,我只在幾天後才使用它們 – Ben

0

你不能做編碼的wordpress的文件即page.php文件修改woocommerce頁面。它的錯誤方式。您只需將WooCommerce頁面覆蓋到您的主題文件夾中,然後修改您想要執行的任何頁面。所有模板/頁面都位於woocommerce/templates文件夾中。

在這裏你可以找到文件。

http://docs.woothemes.com/document/template-structure/ 
+0

是的我知道我在我的問題中犯了一個錯誤,我在我的內容中編寫了自定義模板-single-product.php,不在page.php – Ben

0

編輯woocommerce /模板/內容單product.php的單品視圖

+0

這就是我所做的,它的工作原理,我選擇的具體類別的產品有不同的模板。問題是我想在wordpress頁面上顯示這些產品。但是,當我使用woocommerce produc_page簡碼這麼做時,出人意料地(它讓我感到驚訝),它並沒有用我的自定義模板來展示產品。換句話說:http://www.example.com/product/myproduct/使用我的自定義模板(位於content-single-product.php)顯示產品,但是當我嘗試在另一個wordpress頁面上顯示產品時woocommerce短代碼,它不起作用。 – Ben

+0

我明白你的問題。在content-single-product.php中添加一個如果條件爲模板的情況。例如,如果要在XYZ模板下顯示產品的不同網格樣式,請添加。「if(is_page_template('XYZ.php'))」。你可以爲它編寫特定的代碼。 –

相關問題