Если in_array не использует указанный шаблон - PullRequest
0 голосов
/ 30 октября 2019

Целью является создание отдельной темы для продуктов в woocommerce. Я создал папку с именем woocommerce и поместил ее в каталог моей темы. Требуются 2 файла: single-product.php и content-single-product.php, которые я поместил в папку woocommerce. Затем я продублировал оба этих файла, но назвал их single-product-mtg.php и content-single-product-mtg.php.

Затем я отредактировал оригинальный файл single-product.php и заменил этот код:

wc_get_template_part( 'content', 'single-product' );

на этот код:

global $post;

            $terms      = wp_get_post_terms( $post->ID, 'product_cat' );
            $categories = wp_list_pluck( $terms, 'slug' );

            if (in_array( 'mtg', $categories ) ) {
            wc_get_template_part( 'content', 'single-product-mtg' );
            } else {
            wc_get_template_part( 'content', 'single-product' );
            } // end of new specfic category code ?> 

Когда я сбрасываю $ term, яполучить это:

array(1) 
{ 
[0]=> object(WP_Term)#2832 (10) 
    { 
    ["term_id"]=> int(28) ["name"]=> string(19) "Magic the Gathering" 
    ["slug"]=> string(3) "mtg" 
    ["term_group"]=> int(0) 
    ["term_taxonomy_id"]=> int(28) 
    ["taxonomy"]=> string(11) "product_cat" 
    ["description"]=> string(0) "" 
    ["parent"]=> int(0) 
    ["count"]=> int(295) 
    ["filter"]=> string(3) "raw" 
    }
 }

Когда я сбрасываю $ category, я получаю это:

array(1) { [0]=> string(3) "mtg" }

Однако вместо кода, использующего content-single-product-mtg.php, как и предполагалось,он продолжает использовать content-single-product.php. Что я делаю не так и как мне заставить это использовать content-single-product-mtg.php?

1 Ответ

0 голосов
/ 31 октября 2019

Так как это пользовательская тема, я забыл добавить поддержку функций woocommerce в функции. Работает нормально сейчас. Любой другой человек, любопытный или имеющий такую ​​же проблему, может добавить это в файл functions.php вашей темы.

function mytheme_add_woocommerce_support() {
add_theme_support( 'woocommerce', array(
    'thumbnail_image_width' => 150,
    'single_image_width'    => 300,

    'product_grid'          => array(
        'default_rows'    => 3,
        'min_rows'        => 2,
        'max_rows'        => 8,
        'default_columns' => 4,
        'min_columns'     => 2,
        'max_columns'     => 5,
    ),
) );

} add_action ('after_setup_theme', 'mytheme_add_woocommerce_support');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...