web-dev-qa-db-ja.com

WooCommerce:単一商品ページのテンプレートの変更

子テーマでファイルsingle-product-phpを編集することによって製品ページの構造/デザインを変更する可能性があることを私は知っています。

そのファイルに対する変更は、すべての製品ページに影響します。

しかし、特定の商品ページのテンプレートファイルを変更するにはどうすればよいですか。カスタムページテンプレートでできるのと同じように?ページ(画像)の場合のように、最初から1つの商品ページにテンプレートのドロップダウンはありません。

特定の商品ページのテンプレートを変更する方法

4
user3751508

Woo Commerceはそのプラグインとしては話題になっておらず、特にWordPressとは関係ありませんが、できればsingle-product.phpテンプレートをあなたの子テーマのWooCommerceフォルダにコピーすることです。ファイル名を変更してファイルを変更してから、 single_template または template_include に正しい条件タグを付けてください。

single_template

function get_custom_post_type_template($single_template) {
 global $post;

 if ($post->post_type == 'product') {
      $single_template = dirname( __FILE__ ) . '/single-template.php';
 }
 return $single_template;
}
add_filter( 'single_template', 'get_custom_post_type_template' );

template_include

add_filter( 'template_include', 'portfolio_page_template', 99 );

function portfolio_page_template( $template ) {

    if ( is_page( 'slug' )  ) {
        $new_template = locate_template( array( 'single-template.php' ) );
        if ( '' != $new_template ) {
            return $new_template ;
        }
    }

    return $template;
}
8
Brad Dalton

あなたはWordPressをチェックする必要があります テンプレート階層 それがどのように動作するか。

シングルポスト番号

単一の投稿テンプレートファイルは、単一の投稿をレンダリングするために使用されます。 WordPressは次のパスを使います。

1.single-{post-type}.php – First, WordPress looks for a template for the specific post type. For example, post type is product, WordPress would look for single-product.php.
2.single.php – WordPress then falls back to single.php.
3.index.php – Finally, as mentioned above, WordPress ultimately falls back to index.php.

ページ番号

静的ページをレンダリングするために使用されるテンプレートファイル(page post-type)。他の投稿タイプとは異なり、pageはWordPressにとって特別なものであり、次のパッチを使用します。

   1. custom template file – The page template assigned to the page. See get_page_templates().
   2. page-{slug}.php – If the page slug is recent-news, WordPress will look to use page-recent-news.php.
   3.page-{id}.php – If the page ID is 6, WordPress will look to use page-6.php.
   4. page.php
   5. index.php

特定のIDにはpage-{id}.phpテンプレートを使用できます。

2
sohan