В большинстве случаев WooCommerce прекрасно интегрируется с подавляющим большинством WordPress тем. Проблемы начинаются тогда, когда дефолтные WooCommerce контейнеры, содержащие контент, не соответствуют выбранной теме. В результате этого появляются нарушения в шаблоне WooCommerce страниц, проявляющиеся в виде смещения сайдбара в неправильное место.
Это проблема может повлиять на главную страницу магазина, страницы товаров и страницы таксономии (категории и теги), потому что WooCommerce использует собственные шаблоны для отображения этих страниц (и невозможно сделать так, чтоб WooCommerce распознавал разметку, которую использует ваша тема). Другие «страницы» (оформление заказа, корзина, профиль) не подвергаются изменениям, так как они используют шаблон страницы выбранной темы page.php.
Существуют два способа решения проблемы: использовать «крючки» (для продвинутых пользователей и разработчиков) или использовать нашу функцию перенаправления woocommerce_content() в вашей теме.
Использование woocommerce_content()
Это решение предполагает вам создать новый шаблон страницы вашей темы, которая будет использоваться для отображения всех таксономий и типов записей WooCommerce.
Хоть, данное решение с перенаправлением и довольно простое, оно все же имеет недостаток, который заключается в том, что этот шаблон будет использован для всех WC таксономий (категорий товаров) и типов записей (архивы товаров, страницы товаров).
Разработчикам рекомендуется использовать вместо этого метода Hooks «крючки»
Чтоб создать такую страницу шаблона нужно проделать следующие шаги:
Дупликация page.php
Продублируйте файл вашей темы page.php и назовите его woocommerce.php. Вот примерный путь до этого файла: wp-content/themes/YOURTHEME/woocommerce.php.
Редактирование страницы woocommerce.php
Откройте ваш свежесозданный файл woocommerce.php в текстовом редакторе (или в любом другом редакторе на ваш выбор).
Замена цикла
Следующее, что вам нужно сделать, это найти этот цикл. Цикл обычно начинается с :
…и кончается так :
Но его вид может варьироваться в зависимости от темы. Как найдете его, смело удаляйте, а на его место вставьте:
Благодаря этой процедуре вместо старого цикла будет использоваться WooCommerce цикл. Сохраните файл. Все готово!
Использование Hooks
Метод с использование «крючка» сложнее, чем метод с использованием функции woocommerce_content, но он более гибкий. Мы также используем этот метод для гладкой интеграции с темами Twenty Ten и Twenty Eleven. Вставив нескольких строк в файл вашей темы functions.php, прежде всего, «отцепите» WooCommerce контейнеры.
Затем» прицепите» ваши собственные функции для отображения контейнеров, которые использует ваша тема.
Убедитесь в том, что эта разметка соответствует разметке вашей темы. Если вы не уверены, какие классы или ID нужно использовать, взгляните на файл page.php вашей темы.
Скрываем сообщение от WooCommerce
Как только вы порадовались тому, что ваша тема полностью поддерживает WooCommerce, вы должны «сообщить» об этом коду, чтоб скрыть сообщение «Ваша тема не поддерживается WooCommerce». Чтоб это сделать вы должны добавить следующий код в файл вашей темы functions.php.
Если все это не сработало
Если не один из указанных методов не сработал, и у вас нет возможности обратиться к специалисту, рекомендуется обратить внимание на WooCommerce темы, которые работают сразу после установки, являясь беспроблемным бесплатным решением.
Оригинал для перевода взят отсюда.
Это проблема может повлиять на главную страницу магазина, страницы товаров и страницы таксономии (категории и теги), потому что WooCommerce использует собственные шаблоны для отображения этих страниц (и невозможно сделать так, чтоб WooCommerce распознавал разметку, которую использует ваша тема). Другие «страницы» (оформление заказа, корзина, профиль) не подвергаются изменениям, так как они используют шаблон страницы выбранной темы page.php.
Существуют два способа решения проблемы: использовать «крючки» (для продвинутых пользователей и разработчиков) или использовать нашу функцию перенаправления woocommerce_content() в вашей теме.
Использование woocommerce_content()
Это решение предполагает вам создать новый шаблон страницы вашей темы, которая будет использоваться для отображения всех таксономий и типов записей WooCommerce.
Хоть, данное решение с перенаправлением и довольно простое, оно все же имеет недостаток, который заключается в том, что этот шаблон будет использован для всех WC таксономий (категорий товаров) и типов записей (архивы товаров, страницы товаров).
Разработчикам рекомендуется использовать вместо этого метода Hooks «крючки»
Чтоб создать такую страницу шаблона нужно проделать следующие шаги:
Дупликация page.php
Продублируйте файл вашей темы page.php и назовите его woocommerce.php. Вот примерный путь до этого файла: wp-content/themes/YOURTHEME/woocommerce.php.
Редактирование страницы woocommerce.php
Откройте ваш свежесозданный файл woocommerce.php в текстовом редакторе (или в любом другом редакторе на ваш выбор).
Замена цикла
Следующее, что вам нужно сделать, это найти этот цикл. Цикл обычно начинается с :
Код:
<?php if ( have_posts() ) :
…и кончается так :
Код:
<?php endif; ?>
Но его вид может варьироваться в зависимости от темы. Как найдете его, смело удаляйте, а на его место вставьте:
Код:
<?php woocommerce_content(); ?>
Благодаря этой процедуре вместо старого цикла будет использоваться WooCommerce цикл. Сохраните файл. Все готово!
Использование Hooks
Метод с использование «крючка» сложнее, чем метод с использованием функции woocommerce_content, но он более гибкий. Мы также используем этот метод для гладкой интеграции с темами Twenty Ten и Twenty Eleven. Вставив нескольких строк в файл вашей темы functions.php, прежде всего, «отцепите» WooCommerce контейнеры.
Код:
remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10);
remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10);
Затем» прицепите» ваши собственные функции для отображения контейнеров, которые использует ваша тема.
Код:
add_action('woocommerce_before_main_content', 'my_theme_wrapper_start', 10);
add_action('woocommerce_after_main_content', 'my_theme_wrapper_end', 10);
function my_theme_wrapper_start() {
echo '<section id="main">';
}
function my_theme_wrapper_end() {
echo '</section>';
}
Убедитесь в том, что эта разметка соответствует разметке вашей темы. Если вы не уверены, какие классы или ID нужно использовать, взгляните на файл page.php вашей темы.
Скрываем сообщение от WooCommerce
Как только вы порадовались тому, что ваша тема полностью поддерживает WooCommerce, вы должны «сообщить» об этом коду, чтоб скрыть сообщение «Ваша тема не поддерживается WooCommerce». Чтоб это сделать вы должны добавить следующий код в файл вашей темы functions.php.
Код:
add_theme_support( 'woocommerce' );
Если все это не сработало
Если не один из указанных методов не сработал, и у вас нет возможности обратиться к специалисту, рекомендуется обратить внимание на WooCommerce темы, которые работают сразу после установки, являясь беспроблемным бесплатным решением.
Оригинал для перевода взят отсюда.