Создать пару уникальных классов, повторяющихся в цикле Woocommerce shop loop - PullRequest
1 голос
/ 22 апреля 2019

Я хочу сделать пару уникальных классов, таких как class1, class2, до 6 или 7, добавленных к 6 или 7 товарам в цикле магазина. Я бы хотел, чтобы эти 6/7 товаров с уникальным классом удвоились, чтобы они составляли 12/14 товаров на странице в каталоге магазина.

Я попытался отредактировать файл content-product.php и archive-page.php.

Я добавил этот код в файл содержимого продукта:

<?php
$x = 1;
?>
<li class="columns class<?php echo esc_attr($x++); ?>">

Но это не добавляет дополнительный номер к другому продукту. Он добавляет +1, только если внутри него есть еще один div-класс с этим php-кодом:

<?php echo esc_attr($x++); ?>">

добавлено в класс, но это не относится к другому лицу со следующим продуктом. Есть идеи как этого добиться?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2019

На самом деле мой последний awnser немного другой.Предыдущий не работал с select / options для заказа и, вероятно, более того.Правильное решение для archive-page.php:

defined( 'ABSPATH' ) || exit;

    get_header( 'shop' );

    /**
     * Hook: woocommerce_before_main_content.
     *
     * @hooked woocommerce_output_content_wrapper - 10 (outputs opening 
     divs for the content)
     * @hooked woocommerce_breadcrumb - 20
     * @hooked WC_Structured_Data::generate_website_data() - 30
     */
    do_action( 'woocommerce_before_main_content' );

    ?>
    <header class="woocommerce-products-header">
        <?php if ( apply_filters( 'woocommerce_show_page_title', true ) ) : ?>
            <h1 class="woocommerce-products-header__title page-title"><?php woocommerce_page_title(); ?></h1>
        <?php endif; ?>

        <?php
        /**
         * Hook: woocommerce_archive_description.
         *
         * @hooked woocommerce_taxonomy_archive_description - 10
         * @hooked woocommerce_product_archive_description - 10
         */
        do_action( 'woocommerce_archive_description' );
        ?>
    </header>
<?php

woocommerce_product_loop_start();

$one = 1;

if ( wc_get_loop_prop( 'total' ) ) {
    while ( have_posts() ) {
  the_post();
  ?>
  <div class="columns product<?php echo esc_attr($one++); ?>">
  <?php
        /**
         * Hook: woocommerce_shop_loop.
         *
         * @hooked WC_Structured_Data::generate_product_data() - 10
         */
        do_action( 'woocommerce_shop_loop' );

        wc_get_template_part( 'content', 'product' );
    }
}
woocommerce_product_loop_end();
?>
</div>
<?php
/**
 * Hook: woocommerce_after_shop_loop.
 *
 * @hooked woocommerce_pagination - 10
 */
do_action( 'woocommerce_after_shop_loop' );
} else {
/**
 * Hook: woocommerce_no_products_found.
 *
 * @hooked wc_no_products_found - 10
 */
do_action( 'woocommerce_no_products_found' );
}
/**
* Hook: woocommerce_after_main_content.
*
* @hooked woocommerce_output_content_wrapper_end - 10 (outputs closing divs for the 
content)
*/
do_action( 'woocommerce_after_main_content' );
/**
* Hook: woocommerce_sidebar.
*
* @hooked woocommerce_get_sidebar - 10
*/
do_action( 'woocommerce_sidebar' );

get_footer( 'shop' );
0 голосов
/ 23 апреля 2019

Хорошо, я нашел решение.

<?php
$x = 1;
?>
<li class="columns class<?php echo esc_attr($x++); ?>">

этот код работает только в одном файле php, поэтому мне нужно было хранить все в одном файле php, точно в archive-product.php

Вместо сохранения этой ссылки на другой php-файл

<?php wc_get_template_part( 'content', 'product' ); ?>

Я взял весь контент из контент-продукта и добавил его в archive-product.php, чтобы код $ x мог работать.

Вот так выглядит код archive-product.php и он отлично работает:

defined( 'ABSPATH' ) || exit;

get_header( 'shop' );

do_action( 'woocommerce_before_main_content' );

?>
<header class="woocommerce-products-header">
<?php if ( apply_filters( 'woocommerce_show_page_title', true ) ) : ?>
    <h1 class="woocommerce-products-header__title page-title"><?php 
woocommerce_page_title(); ?></h1>
<?php endif; ?>
<?php
/**
 * Hook: woocommerce_archive_description.
 *
 * @hooked woocommerce_taxonomy_archive_description - 10
 * @hooked woocommerce_product_archive_description - 10
 */
do_action( 'woocommerce_archive_description' );
?>
</header>
<?php
if ( woocommerce_product_loop() ) {
/**
 * Hook: woocommerce_before_shop_loop.
 *
 * @hooked woocommerce_output_all_notices - 10
 * @hooked woocommerce_result_count - 20
 * @hooked woocommerce_catalog_ordering - 30
 */
do_action( 'woocommerce_before_shop_loop' );
}
?>
<div class="products">
<?php
    $one = 1;
    $args = array(
        'post_type' => 'product',
        'posts_per_page' => 12
        );
    $loop = new WP_Query( $args );
    if ( $loop->have_posts() ) {
        while ( $loop->have_posts() ) : $loop->the_post();
        ?>
    <div class="columns product<?php echo esc_attr($one++); ?>">
        <div class="column is-one-third">
    <?php
    defined( 'ABSPATH' ) || exit;

    global $product;

    // Ensure visibility.
    if ( empty( $product ) || ! $product->is_visible() ) {
        return;
    }
    /**
     * Hook: woocommerce_before_shop_loop_item.
     *
     * @hooked woocommerce_template_loop_product_link_open - 10
     */
    do_action( 'woocommerce_before_shop_loop_item' );
    /**
     * Hook: woocommerce_before_shop_loop_item_title.
     *
     * @hooked woocommerce_show_product_loop_sale_flash - 10
     * @hooked woocommerce_template_loop_product_thumbnail - 10
     */
    do_action( 'woocommerce_before_shop_loop_item_title' );
        /**
     *
     * close link
     */
    do_action( 'woocommerce_shop_loop_close_link' );
    ?>
        </div>
        <div class="column">
    <?php
    /**
     * Hook: woocommerce_before_shop_loop_item.
     *
     * @hooked woocommerce_template_loop_product_link_open - 10
     */
    do_action( 'woocommerce_before_shop_loop_item' );


    /**
     * Hook: woocommerce_shop_loop_item_title.
     *
     * @hooked woocommerce_template_loop_product_title - 10
     */
    do_action( 'woocommerce_shop_loop_item_title' );

    /**
     * Hook: woocommerce_after_shop_loop_item_title.
     *
     * @hooked woocommerce_template_loop_rating - 5
     * @hooked woocommerce_template_loop_price - 10
     */
    do_action( 'woocommerce_after_shop_loop_item_title' );
    /**
     * Hook: woocommerce_after_shop_loop_item.
     *
     * @hooked add to cart
     */
    do_action( 'woocommerce_after_shop_loop_item' );
        /**
     *
     * close link
     */
    do_action( 'woocommerce_shop_loop_close_link' );
    ?>
        </div>
    </div>
<?php
        endwhile;
    } else {
        echo __( 'Nie znaleziono produktów' );
    }
    wp_reset_postdata();
?>
</div><!--/.products-->

<?php
do_action( 'woocommerce_after_shop_loop' );
get_footer( 'shop' );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...