Andrei | wip: рефакторинг разношу файлы из директории wocommerce

dev_10_refactoring
Your Name 2 months ago
parent 8e3857cfc4
commit c332059a29
  1. 122
      wp-content/themes/cosmopet/modules/shop/components/catalog/component-controller.php
  2. 2
      wp-content/themes/cosmopet/temp-functions/woocommerce-logic.php
  3. 2
      wp-content/themes/cosmopet/templates/_blocks/shop/archive-product-ajaxload.twig
  4. 0
      wp-content/themes/cosmopet/templates/_blocks/shop/archive-product-tease.twig
  5. 2
      wp-content/themes/cosmopet/templates/_pages/shop/archive-product.twig
  6. 119
      wp-content/themes/cosmopet/woocommerce/archive-product.php
  7. 0
      wp-content/themes/cosmopet/woocommerce/archive-product/archive-product-modal.twig

@ -0,0 +1,122 @@
<?php
wp_enqueue_script( 'shop_scripts', get_template_directory_uri() . '/woocommerce/assets/js/gp-main.js', 'jquery', '', true);
wp_enqueue_style( 'shop_styles_core', get_template_directory_uri() . '/woocommerce/assets/css/gp-style-core.css');
wp_enqueue_style( 'shop_styles_desktop', get_template_directory_uri() . '/woocommerce/assets/css/gp-style-desktop.css');
wp_enqueue_style( 'shop_styles_tablet', get_template_directory_uri() . '/woocommerce/assets/css/gp-style-tablet.css');
wp_enqueue_style( 'shop_styles_mobile', get_template_directory_uri() . '/woocommerce/assets/css/gp-style-mobile.css');
wp_enqueue_style( 'shop_styles_order', get_template_directory_uri() . '/woocommerce/assets/css/gp-style-order.css');
wp_enqueue_style( 'shop_styles_ultra', get_template_directory_uri() . '/woocommerce/assets/css/gp-style-ultra.css');
function get_active_woobewoo_filters_for_twig() {
$filters = [];
error_log('=== WooBeWoo: фильтры проверяются ===');
foreach ($_GET as $key => $value) {
error_log("Ключ: $key => " . print_r($value, true));
if (strpos($key, 'wpf_filter_') === 0) {
$raw_taxonomy = str_replace('wpf_filter_', '', $key);
error_log("→ Обнаружен фильтр: $raw_taxonomy");
$slugs = is_array($value) ? $value : explode(',', $value);
error_log("→ Slugs: " . implode(', ', $slugs));
// Попробуем с pa_ и без, в зависимости от существования таксономии
$taxonomy = taxonomy_exists('pa_' . $raw_taxonomy) ? 'pa_' . $raw_taxonomy : $raw_taxonomy;
foreach ($slugs as $slug) {
$term = get_term_by('slug', $slug, $taxonomy);
if ($term) {
error_log("✔ Найден термин: {$term->name} (ID: {$term->term_id}) в таксономии: $taxonomy");
$filters[] = [
'id' => $term->term_id,
'name' => $term->name,
'slug' => $term->slug,
'taxonomy' => $taxonomy,
];
} else {
error_log("✖ Термин не найден: $slug в таксономии: $taxonomy");
}
}
}
}
if (empty($filters)) {
error_log('Ни один активный фильтр не найден.');
}
return $filters;
}
$context = Timber::context();
//$context['posts'] = Timber::get_posts();
$context['criteria_for_new_product'] = date('Y-m-d', strtotime('-30 days'));
// Задаем количество постов для подзагрузки Ajax
$context['posts_per_page'] = 12;
$queried_object = get_queried_object();
if (is_product_category() || is_tax()) {
$term_id = $queried_object->term_id;
$context['category_type'] = 'product_cat';
$context['category_id'] = $term_id;
$context['category'] = get_term($term_id, 'product_cat');
$context['category_link'] = get_term_link($term_id, 'product_cat');
$context['category_title'] = single_term_title('', false);
}
if (is_tax()) {
$context['category_type'] = $queried_object->taxonomy;
$context['category'] = get_term($term_id, $context['category_type']);
$context['category_link'] = get_term_link($term_id, $context['category_type']);
$context['category_title'] = single_term_title('', false);
}
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => $context['posts_per_page'],
'paged' => 1,
'has_password' => FALSE
);
$count_args = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => -1,
'has_password' => FALSE
);
if ($context['category_id'] != NULL) {
$categories = [
'tax_query' => array(
array(
'taxonomy' => $context['category_type'],
'terms' => $context['category_id'],
'operator' => 'IN'
),
array(
'taxonomy' => 'product_visibility',
'field' => 'slug',
'terms' => 'exclude-from-catalog',
'operator' => 'NOT IN'
)
)
];
$args = array_merge($args, $categories);
$count_args = array_merge($count_args, $categories);
}
$context['active_filters'] = get_active_woobewoo_filters_for_twig();
$context['posts'] = Timber::get_posts($args);
$context['count'] = count(Timber::get_posts($count_args));
$context['sidebar_filters'] = Timber::get_widgets('sidebar_filters');
Timber::render('_pages/shop/archive-product.twig', $context);
?>

@ -85,7 +85,7 @@ function get_products() {
$context['ended'] = true;
}
Timber::render( 'woocommerce/archive-product/archive-product-ajaxload.twig', $context );
Timber::render( '_blocks/shop/archive-product-ajaxload.twig', $context );
die();
}

@ -1,5 +1,5 @@
{% for post in posts %}
{% include '/woocommerce/archive-product/archive-product-tease.twig' with {post: post} %}
{% include '_blocks/shop/archive-product-tease.twig' with {post: post} %}
{% endfor %}
{% if not ended %}

@ -61,7 +61,7 @@
<div class="product__main">
{% for post in posts %}
{% include '/woocommerce/archive-product/archive-product-tease.twig' with {post: post} %}
{% include '_blocks/shop/archive-product-tease.twig' with {post: post} %}
{% endfor %}
</div>

@ -1,122 +1,5 @@
<?php
wp_enqueue_script( 'shop_scripts', get_template_directory_uri() . '/woocommerce/assets/js/gp-main.js', 'jquery', '', true);
wp_enqueue_style( 'shop_styles_core', get_template_directory_uri() . '/woocommerce/assets/css/gp-style-core.css');
wp_enqueue_style( 'shop_styles_desktop', get_template_directory_uri() . '/woocommerce/assets/css/gp-style-desktop.css');
wp_enqueue_style( 'shop_styles_tablet', get_template_directory_uri() . '/woocommerce/assets/css/gp-style-tablet.css');
wp_enqueue_style( 'shop_styles_mobile', get_template_directory_uri() . '/woocommerce/assets/css/gp-style-mobile.css');
wp_enqueue_style( 'shop_styles_order', get_template_directory_uri() . '/woocommerce/assets/css/gp-style-order.css');
wp_enqueue_style( 'shop_styles_ultra', get_template_directory_uri() . '/woocommerce/assets/css/gp-style-ultra.css');
function get_active_woobewoo_filters_for_twig() {
$filters = [];
error_log('=== WooBeWoo: фильтры проверяются ===');
foreach ($_GET as $key => $value) {
error_log("Ключ: $key => " . print_r($value, true));
if (strpos($key, 'wpf_filter_') === 0) {
$raw_taxonomy = str_replace('wpf_filter_', '', $key);
error_log("→ Обнаружен фильтр: $raw_taxonomy");
$slugs = is_array($value) ? $value : explode(',', $value);
error_log("→ Slugs: " . implode(', ', $slugs));
// Попробуем с pa_ и без, в зависимости от существования таксономии
$taxonomy = taxonomy_exists('pa_' . $raw_taxonomy) ? 'pa_' . $raw_taxonomy : $raw_taxonomy;
foreach ($slugs as $slug) {
$term = get_term_by('slug', $slug, $taxonomy);
if ($term) {
error_log("✔ Найден термин: {$term->name} (ID: {$term->term_id}) в таксономии: $taxonomy");
$filters[] = [
'id' => $term->term_id,
'name' => $term->name,
'slug' => $term->slug,
'taxonomy' => $taxonomy,
];
} else {
error_log("✖ Термин не найден: $slug в таксономии: $taxonomy");
}
}
}
}
if (empty($filters)) {
error_log('Ни один активный фильтр не найден.');
}
return $filters;
}
$context = Timber::context();
//$context['posts'] = Timber::get_posts();
$context['criteria_for_new_product'] = date('Y-m-d', strtotime('-30 days'));
// Задаем количество постов для подзагрузки Ajax
$context['posts_per_page'] = 12;
$queried_object = get_queried_object();
if (is_product_category() || is_tax()) {
$term_id = $queried_object->term_id;
$context['category_type'] = 'product_cat';
$context['category_id'] = $term_id;
$context['category'] = get_term($term_id, 'product_cat');
$context['category_link'] = get_term_link($term_id, 'product_cat');
$context['category_title'] = single_term_title('', false);
}
if (is_tax()) {
$context['category_type'] = $queried_object->taxonomy;
$context['category'] = get_term($term_id, $context['category_type']);
$context['category_link'] = get_term_link($term_id, $context['category_type']);
$context['category_title'] = single_term_title('', false);
}
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => $context['posts_per_page'],
'paged' => 1,
'has_password' => FALSE
);
$count_args = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => -1,
'has_password' => FALSE
);
if ($context['category_id'] != NULL) {
$categories = [
'tax_query' => array(
array(
'taxonomy' => $context['category_type'],
'terms' => $context['category_id'],
'operator' => 'IN'
),
array(
'taxonomy' => 'product_visibility',
'field' => 'slug',
'terms' => 'exclude-from-catalog',
'operator' => 'NOT IN'
)
)
];
$args = array_merge($args, $categories);
$count_args = array_merge($count_args, $categories);
}
$context['active_filters'] = get_active_woobewoo_filters_for_twig();
$context['posts'] = Timber::get_posts($args);
$context['count'] = count(Timber::get_posts($count_args));
$context['sidebar_filters'] = Timber::get_widgets('sidebar_filters');
Timber::render('archive-product/archive-product.twig', $context);
include_component('shop', 'catalog')
?>
Loading…
Cancel
Save