Files
f1den 29d10ce4cf Тема магазина по макету Figma
Каталог, карточка товара, корзина, оформление заказа и блог на WooCommerce.

Стили разложены по слоям: токены из Figma, база, компоненты, страницы,
брейкпоинты. Цвета, типографика, радиусы и отступы взяты из Variables и
текстовых стилей макета, ниже по слоям хардкода нет.

Иконки — Phosphor, вставляются инлайном как SVG, символами ничего не рисуется.
Стили WooCommerce отключены, вёрстка своя, !important не используется.
2026-07-30 22:38:49 +03:00

129 lines
5.0 KiB
PHP

<?php
/**
* Home page.
*
* @package VyatkaShop
*/
get_header();
$products = function_exists( 'wc_get_products' )
? wc_get_products(
array(
'limit' => 8,
'status' => 'publish',
'orderby' => 'date',
'order' => 'DESC',
)
)
: array();
$categories = taxonomy_exists( 'product_cat' )
? get_terms(
array(
'taxonomy' => 'product_cat',
'hide_empty' => false,
'number' => 4,
'parent' => 0,
)
)
: array();
$news = get_posts(
array(
'numberposts' => 6,
'post_status' => 'publish',
)
);
?>
<section class="hero">
<div class="container">
<div class="hero-copy">
<div class="hero-main">
<div class="hero-title-group">
<h1><?php echo esc_html( get_theme_mod( 'vyatka_hero_title', 'Строим тёплые деревянные дома' ) ); ?></h1>
<p><?php echo esc_html( get_theme_mod( 'vyatka_hero_text', 'Учитывая ключевые сценарии поведения, существующая теория в значительной степени обусловливает важность дальнейших направлений развития.' ) ); ?></p>
</div>
<div class="hero-features">
<div class="hero-feature">
<?php vyatka_shop_icon( 'feature', array( 'class' => 'feature-mark' ) ); ?>
<span>Построим дом по<br>вашему дизайн-проекту</span>
</div>
<div class="hero-feature">
<?php vyatka_shop_icon( 'feature', array( 'class' => 'feature-mark' ) ); ?>
<span>Уникальный дизайн<br>с удобной планировкой</span>
</div>
<div class="hero-feature">
<?php vyatka_shop_icon( 'feature', array( 'class' => 'feature-mark' ) ); ?>
<span>Подберем мебель<br>и подключим технику</span>
</div>
</div>
</div>
<a class="button hero-button" href="<?php echo esc_url( home_url( '/catalog/' ) ); ?>"><?php esc_html_e( 'Подробнее', 'vyatka-shop' ); ?></a>
</div>
</div>
</section>
<section class="section products-section">
<div class="container">
<div class="section-head">
<h2 class="section-title"><?php esc_html_e( 'Товары', 'vyatka-shop' ); ?></h2>
<div class="slider-controls" data-carousel-controls="home-products">
<button type="button" data-carousel-prev aria-label="<?php esc_attr_e( 'Предыдущие товары', 'vyatka-shop' ); ?>"><?php vyatka_shop_icon( 'arrow-right', array( 'class' => 'icon-flip icon-20' ) ); ?></button>
<button type="button" data-carousel-next aria-label="<?php esc_attr_e( 'Следующие товары', 'vyatka-shop' ); ?>"><?php vyatka_shop_icon( 'arrow-right', array( 'class' => 'icon-20' ) ); ?></button>
</div>
</div>
<div class="product-grid" id="home-products" data-carousel>
<?php
foreach ( $products as $product_item ) {
$GLOBALS['product'] = $product_item;
get_template_part( 'template-parts/product-card' );
}
wp_reset_postdata();
?>
</div>
</div>
</section>
<section class="section categories-section">
<div class="container">
<div class="section-head">
<h2 class="section-title"><?php esc_html_e( 'Каталог', 'vyatka-shop' ); ?></h2>
</div>
<div class="category-grid">
<?php if ( ! is_wp_error( $categories ) ) : ?>
<?php foreach ( $categories as $category ) : ?>
<a class="category-card" href="<?php echo esc_url( get_term_link( $category ) ); ?>">
<span class="category-card-copy">
<h3><?php esc_html_e( 'Название', 'vyatka-shop' ); ?></h3>
<p><?php esc_html_e( 'Описание категории', 'vyatka-shop' ); ?></p>
<span class="text-link"><?php esc_html_e( 'Перейти', 'vyatka-shop' ); ?><?php vyatka_shop_icon( 'arrow-right-fill', array( 'class' => 'icon-20' ) ); ?></span>
</span>
<span class="category-card-media" aria-hidden="true"></span>
</a>
<?php endforeach; ?>
<?php endif; ?>
</div>
</div>
</section>
<section class="section news-section">
<div class="container">
<div class="section-head">
<h2 class="section-title"><?php esc_html_e( 'Новости', 'vyatka-shop' ); ?></h2>
<div class="slider-controls" data-carousel-controls="home-news">
<button type="button" data-carousel-prev aria-label="<?php esc_attr_e( 'Предыдущие новости', 'vyatka-shop' ); ?>"><?php vyatka_shop_icon( 'arrow-right', array( 'class' => 'icon-flip icon-20' ) ); ?></button>
<button type="button" data-carousel-next aria-label="<?php esc_attr_e( 'Следующие новости', 'vyatka-shop' ); ?>"><?php vyatka_shop_icon( 'arrow-right', array( 'class' => 'icon-20' ) ); ?></button>
</div>
</div>
<div class="news-grid" id="home-news" data-carousel>
<?php foreach ( $news as $post_item ) : ?>
<?php vyatka_shop_news_card( $post_item ); ?>
<?php endforeach; ?>
</div>
<a class="all-news-link" href="<?php echo esc_url( get_post_type_archive_link( 'post' ) ?: home_url( '/blog/' ) ); ?>"><?php esc_html_e( 'Все новости', 'vyatka-shop' ); ?></a>
</div>
</section>
<?php
get_footer();