programing

WooCommerce 아카이브의 제품 행 사이에 내용 추가

stoneblock 2023. 10. 6. 20:51

WooCommerce 아카이브의 제품 행 사이에 내용 추가

제품 카테고리의 세 번째 제품(그리고 여섯 번째, 아홉 번째...) 다음에 내용을 표시하려고 합니다.모든 범주에 그와 같은 양의 추가 내용이 있는 것은 아닙니다.그래서 유연성이 있어야 합니다.

다음 코드를 사용하는 를 발견했습니다.

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
        <?php get_template_part( 'template-parts/content' ); ?>    
        <?php if ( $wp_query->current_post == 1 ) { ?>
             <div>Put Ad Here</div>
        <?php } ?>    
<?php endwhile; endif; ?>

그 코드를 내 것에 추가했습니다.archive-product.php다음과 같이:

if ( wc_get_loop_prop( 'total' ) ) {
    while ( have_posts() ) {
        the_post();

        /**
         * Hook: woocommerce_shop_loop.
         */
        do_action( 'woocommerce_shop_loop' );

        wc_get_template_part( 'content', 'product' );

        if ( $wp_query->current_post == 1 ) { 
            echo '<div>Put Ad Here</div>';
        }


    }
}

하지만 아무것도 보이지 않습니다.그리고 템플릿 파일을 아예 터치하지 않고 이런 내용을 추가할 수 있는 방법이 있으면 좋겠습니다.

그것에 사용할 수 있는 갈고리가 있습니까?

업데이트됨 - 템플릿 파일을 재정의하는 대신 각 제품 행 사이에 사용자 지정 컨텐츠 전체 행을 추가하는 다음 후킹 기능을 사용할 수 있습니다.

add_action( 'woocommerce_shop_loop', 'action_woocommerce_shop_loop', 100 );
function action_woocommerce_shop_loop() {
    // Only on producy cayegory archives
    if ( is_product_category() ) :
        
    global $wp_query;
    
    // Get the number of columns set for this query
    $columns = esc_attr( wc_get_loop_prop( 'columns' ) );
    
    // Get the current post count 
    $current_post = $wp_query->current_post;
    
    if ( ( $current_post % $columns ) == 0  && $current_post > 1 ) :
    
    ?>
    </ul>
    <ul class="columns-1" style="list-style:none; margin:0 0 3em;">
        <li style="text-align:center; padding:2em 1em; border: solid 1px #ccc;"><div class="banner"><?php _e("Custom content here"); ?></div></li>
    </ul>
    <ul class="products columns-<?php echo $columns; ?>">
    <?php
    endif; endif;
}

코드는 기능을 합니다.활성 하위 테마(또는 활성 테마)의 php 파일입니다.테스트를 거쳐 작동합니다.

enter image description here

신인 신분으로 댓글을 달 수 없지만, 위 코드에 약간의 추가 사항이 있다면 변경할 수 있습니다.

if ( ( $current_post % $columns ) == 0  && $current_post > 1 ) 

로.

if ( ( $current_post % $columns ) == 0  && $current_post%6==0 )

내용물은 6번째 제품마다 배치됩니다.당연히 어떤 번호라도 사용할 수 있습니다.이것에 대한 해결책을 찾을 수 없었기 때문에 이것이 도움이 될 것이라고 생각했습니다.

언급URL : https://stackoverflow.com/questions/62469930/add-content-in-between-product-rows-in-woocommerce-archives