ACF 리피터 출력의 총 행 수를 카운트하는 방법
질문:ACF 리피터필드의 출력 행은 어떻게 카운트합니까?
목표: 행이 1개뿐일 때 css 클래스에서 출력을 다르게 하는 것과 여러 행일련의 행은 여러 개입니다.
내 코드:
if( have_rows('testimonials')) {
$counter = 0;
$numtestimonials = '';
//loop thru the rows
while ( have_rows('testimonials') ){
the_row();
$counter++;
if ($counter < 2) {
$numtestimonials = 'onlyone';
}
echo '<div class="testimonial ' . $numtestimonials . '">';
// bunch of output here
echo '</div>';
}
}
여기서의 방법은 첫 번째 행에서 카운트가 2보다 작기 때문에 동작하지 않기 때문에 더 많은 행을 카운트해도 true가 반환됩니다.
감사해요!
그래, 드디어 답을 찾았어.
ACF 리피터의 합계 행을 카운트 하는 방법은 다음과 같습니다.
$numrows = count( get_sub_field( 'field_name' ) );
저는 작업입니다. 카운트는 if(have_rows('repeater_field') 앞에 배치해야 합니다.
리피터가 비어 있는 경우 경고 오류를 방지하기 위한 3진 연산자
"if(have_rows('repeater_field')" 뒤에 카운트를 배치하면 카운트는 FALSE를 반환합니다.
$repeater_field = get_sub_field('repeater_field');
// OR if repeater isn't a sub_field
// $repeater_field = get_field('repeater_field');
// ternary operator to avoid warning errors if no result
$count = $repeater_field ? count($repeater_field) : FALSE;
if(have_rows('repeater_field')) : // OR if($count) :
echo 'Number of posts:' . $count . '<br>';
while(have_rows('repeater_field')) : the_row();
echo get_sub_field('field_name') . '<br>';
endwhile;
endif;
다음과 같이 행 수를 얻을 수 있습니다.
$count = get_post_meta(get_the_ID(), 'testimonials', true);
분명히 이것은get_the_ID()
현재 게시물 ID를 가져오려면 이 ID를 수정해야 할 수 있습니다.
ACF는 리피터 필드명에 대한 리피터 카운트 값을 포스트메타 테이블에 meta_key로 저장합니다.
ACF는 카운트를 사용하여 올바른 리피터 서브필드 값을 가져옵니다.이 값은 다음 형식의 meta_keys에 대한 값으로 저장됩니다.$repeaterFieldname . '_' . $index . '_' . $subfieldName
.
이게 도움이 되길...
이걸 한번 써보시는게 좋을거에요.
<?php
$row = get_field('repeater', $post->ID);
if($row < 1) {
$rows = 0;
} else {
$rows = count($row);
} ?>
<p>Number of Row is (<?php echo $rows ; ?>)</p>
고급 사용자 지정 필드에는 버전에 추가된 행을 카운트하는 기능이 내장되어 있습니다.5.3.4
.
공식 매뉴얼: ACF | get_row_index()
사용할 수 있습니다.get_row_index();
루프의 내부.
<?php if( have_rows('slides') ): ?>
<?php while( have_rows('slides') ): the_row(); ?>
<div class="accordion" id="accordion-<?php echo get_row_index(); ?>">
<h3><?php the_sub_field('title'); ?></h3>
<?php the_sub_field('text'); ?>
</div>
<?php endwhile; ?>
<?php endif; ?>
이 함수에서 반환되는 인덱스는 1부터 시작됩니다.즉, 데이터 행이 3개인 리피터필드는 1, 2, 3의 인덱스를 생성합니다.
값을 리셋하고 싶은 것 같습니다.$numtestimonials
.
따라서 실질적으로 수정이 필요한 코드는 다음과 같습니다.
$output = "";
$numtestimonials = "";
while ( have_rows('testimonials') ){
the_row();
$counter++;
$output .= "<span>" .$some_data. "</span>"; // bunch of output;
}
if($counter < 2){
$numtestimonials = "onlyone";
}
$output = "<div class='testimonail ".$numtestimonials." '>"
.$output
."</div>";
echo $output;
이 코드는 정상적으로 동작하고 있습니다.
<?php if( have_rows('repeater_name') ):
$my_fields = get_field_object('repeater_name');
$count = (count($my_fields));
echo $count;
endif;?>
ACF 리피터 필드는 행을 저장하기 위해 배열을 사용합니다. 필드 행의 수를 얻는 가장 간단한 방법은 다음과 같습니다.
$count = sizeof(get_sub_field('field_name'));
언급URL : https://stackoverflow.com/questions/43788167/how-to-count-the-total-number-of-rows-in-a-acf-repeater-output
'programing' 카테고리의 다른 글
React에서 setState를 사용하여 개체 업데이트 (0) | 2023.03.07 |
---|---|
Angular에서 ng-show를 전환하려면 어떻게 해야 합니까?부울에 기반한 JS? (0) | 2023.03.07 |
1면에 올빼미 회전목마 추가하는 방법 (0) | 2023.03.02 |
REST API의 JSON 응답에 null 값을 포함해야 합니까? (0) | 2023.03.02 |
mvn spring-boot: 부모 모듈에서 실행하시겠습니까? (0) | 2023.03.02 |