web-dev-qa-db-ja.com

Woocommerceアーカイブページと商品カテゴリページの両方にカスタム表示を設定する方法

これまでのところ

こんにちは、私は私の質問が「ウーコマース」についてのよくある質問と非常に密接に関連していることを理解しています。

私はさまざまなWooフック、フィルターを使って、そして私の子供のテーマの中でオリジナルのWooテンプレートファイルのコピーをwoocommerce /というフォルダーに作成してきました。

これはうまくいっていて、私はwoocommerceを私のテーマに統合する編集をすることができます。

私がやろうとしていること

Woocommerceはarchive-product.phpを使って商品カテゴリを表示します。また、このテンプレートを使用してカテゴリの商品を表示します。

商品ページをカテゴリページとは非常に異なるスタイルにして、カテゴリの商品を表示する別のアーカイブテンプレートを作成したい

私は新しいproducts-product.phpテンプレートページを使用するか、それとも私の最善の選択肢になると考えています。私はプラグインについてもっと学ぶことに非常に興味があるので、私は素早いCSS修正から離れてテンプレートファイルとフックを使うことを学ぶことを試みています。

正しい方向へのアドバイスやポイントは大歓迎です。

3
JohnLion

通常、WordPressに別のテンプレートをロードするように指示できます。最もよく見られるアプローチでは、 template_redirect または template_include フックを使用します。この 記事 で説明されているようにtemplate_includeを使うことが好ましいです。これにどのように取り組むかについての例に従う:

コード:

// load the woocommerce category archive template
add_filter( 'template_include', 'wpse138858_woocommerce_category_archive_template' );
function wpse138858_woocommerce_category_archive_template( $original_template ) {
    // we're loading the template conditionally, 
    // but only if we're actually on a woocommerce category archive
    if ( is_product_category() ) {
        // you've to create the template you want to use here first
        return get_template_directory().'/woocommerce-category-archive.php';
    } else {
        return $original_template;
    }
}

追加情報:

ノート:

  • 未試験
  • 彼らがそこでテンプレートローディングをどのように処理するかに応じて、ウーコマースのために/を使ってこれを行うためのより具体的な方法があるかもしれません。そのためには、あなたの研究を拡張したり、ウーコマースコードに飛び込む必要があります。

編集:

あなたが探しているのは - もしあなたがそれをウーコマースのやり方でやりたいのであれば - 関数です wc_get_template_part() - 以前はWC 2.1より前、 woocommerce_get_template_part() 、現在は非推奨です。私はしばらく前に後者を使う方法について 答え を与えました、あなたは新しく命名されたためにそれをすることができます - 機能は同じです - それに応じて機能は同じです。もちろん答えは関数の直接の使用に関係します、あなたの場合あなたはおそらくあなたが望んでいてそして通信員フック wc_get_template_part を利用するべきです。この情報を手にして、あなたはこれをウーコマースのやり方でできるはずです。

3
Nicolai