Главная страница WooCommerce

У меня есть очень простая тема, которая до сих пор работает WooCommerce. В моем functions.php я настроил следующее для поддержки woocommerce .

 // // WooCommerce Hooks and Theme Overrides // 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', 'cm_theme_wrapper_start', 10); add_action('woocommerce_after_main_content', 'cm_theme_wrapper_end', 10); function cm_theme_wrapper_start() { echo ' <div class="main-content-wrapper"> <section class="layout-standard"> <section class="cards"> <div class="layout-gallery short"> <div class="background"></div> <img class="background-image" src="'; if ( has_post_thumbnail() ) { the_post_thumbnail_url('header-bg'); } else { echo get_template_directory_uri().'/images/default.jpg'; } echo '" alt="'; $image_title = get_post(get_post_thumbnail_id())->post_title; echo $image_title; echo '" title="'; $image_title = get_post(get_post_thumbnail_id())->post_title; echo $image_title; echo '"> <div class="width-container"> <div class="inner-container"> <h1 class="section-title">'; woocommerce_page_title(); echo '</h1> </div> </div> </div> </section> <div class="width-container"> <div class="content-container"> <div class="content-holder">'; } function cm_theme_wrapper_end() { echo ' </div> </div> </div> <div class="sidebar-container">'; get_sidebar(); echo ' </div> </section> </div>'; } 

Это отлично работает, однако на главной странице магазина он не показывает страницы с изображением. Однако он показывает изображение последнего продукта. Это, в основном, страница архива, но, вне зависимости от WordPress, я думаю.

Как я могу отобразить изображение основной страницы магазина вместо последнего изображения продукта?

Страница WooCommerce Shop – это архив типа post. Он не находится за пределами WP, его просто управляют либо в плагине, либо в теме, а не как «Страница» или другой тип сообщения. Подобно тому, как обрабатываются почтовые категории.

Поскольку страница магазина является архивом, его цикл / запрос идентифицирует продукты. Вот почему он получает изображение последнего продукта. Вы должны иметь возможность настроить код на что-то вроде:

 ... (up to line 16 of your existing code) ... echo '<img class="background-image" src="'; // if this is the Shop page - function specific to WooCommerce if(is_shop()) { echo get_template_directory_uri().'/images/shop-page-image.jpg'; // all other content } else { if ( has_post_thumbnail() ) { the_post_thumbnail_url('header-bg'); } else { echo get_template_directory_uri().'/images/default.jpg'; } } $image_title = get_post(get_post_thumbnail_id())->post_title; echo '" alt="' . $image_title . '" title="' . $image_title . '" />'; 

Просто измените «shop-page-image.jpg» на имя файла, который вы хотите отобразить на странице Магазина.

Поскольку базовая страница для магазина представляет собой архив типа post, вы можете условно сохранить миниатюру для этого типа post post и соответствующим образом настроить дополнительные страницы.

В этом примере тип WooCommerce – продукт

 if (is_post_type_archive(product)){$base_thumb = wc_get_page_id( 'shop' );} $thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $base_thumb ), "size" ); echo $thumbnail[0];