WordPress를 사용한 PHP if/else get_field()
WP 백엔드에서 클라이언트의 홈페이지에 표시되는 회전목마를 커스터마이즈할 수 있는 옵션을 제공하려고 합니다.클라이언트로부터의 입력을 처리하기 위해 고급 사용자 지정 필드를 사용하고 있습니다.두 가지 옵션을 제공하고 싶습니다.
옵션 #1) 표시할 텍스트 문자열('carusel_title_text')을 클라이언트가 삽입할 수 있도록 합니다.
옵션 #2) 클라이언트가 표시할 로고를 업로드할 수 있습니다('carusel_logo').
제목 텍스트는 코드로 확인하고 없으면 로고를 표시해 주었으면 합니다.두 필드가 모두 비어 있으면 어떻게 될지 아직 결정하지 못했습니다.어쨌든, 제가 생각해낸 것은 다음과 같습니다.
<?
if( get_field('carousel_title_text') ) { ?>
<h2 class="promo"><?php the_field('carousel_title_text');?></h2>
<? } elseif( get_field('carousel_logo') ) {
the_field('carousel_logo');
}
?>
입력이 있는 한 carousel_title_text'는 표시되지만, 비어 있고 carousel_logo가 없는 경우에는 로고가 올바르게 출력되지 않습니다.내가 뭘 잘못하고 있는지, 더 나은 방법이 있는지 말해줄 사람?
잘 부탁드립니다.
, 는 '아니다', '아니다', '아니다', '아니다', '아니다'가 아닙니다.If/Else
로고 필드를 사용합니다.는 올바르게 되어 있을 입니다.carousel_logo
)를 ACF의 이미지로 사용합니다.
이미지 필드에는 다음과 같은 3가지 다른 리턴 값이 있습니다.
주의: ACF 일부 버전에서는 이미지 어레이가 아닌 이미지 오브젝트가 있지만 개념적으로는 동일합니다.
쓰면 가 잘 안요.the_field('carousel_logo');
템플릿에 추가해 주세요.그럼 로고는 어떻게 구해요?
가장 쉬운 솔루션을 원할 경우 로고 필드의 반환값으로 이미지 URL을 선택하고 다음과 같이 인쇄합니다.
<?
$title = get_field('carousel_title_text');
$logo = get_field('carousel_logo');
if (!empty($title)) : ?>
<h2 class="promo"><?= $title ?></h2>
<?php elseif (!empty($logo)) : ?>
<img class="logo" src="<?= $logo ?>">
<?php else: ?>
<!-- No title, no logo -->
<?php endif ?>
코드를 조금 변경했습니다만, 요점은 다음과 같습니다.
<img class="logo" src="<?= $logo ?>">
이것 또는 이에 상당하는 것
<img class="logo" src="<?php echo $logo ?>">
제목이 없어지면 이미지가 나타납니다.
보너스: 섬네일 사이즈가 다른 경우 이미지 어레이를 반환값으로 사용할 것을 권장합니다.그런 경우에는$logo
모든 정보(크기, 모든 섬네일 URL, 캡션 등)를 포함하는 어레이입니다.
용도:
<img class="logo" src="<?= $logo['sizes']['medium'] ?>">
서 ''는'medium'
출력할 축소판 그림 크기 레이블입니다.
또, ACF 의 Image 필드의 타입에 관한 공식 문서를 참조해 주세요.
마지막으로 other 조건을 붙였습니다.클라이언트가 Enter text ot logo를 입력하지 않을 경우 기본 텍스트가 표시됩니다.벨로우 코드를 사용합니다.
<?php
if( get_field('carousel_title_text') ) { ?>
<h2 class="promo"><?php the_field('carousel_title_text');?></h2>
<?php } elseif( get_field('carousel_logo') ) {
the_field('carousel_logo');
}else {
echo " <h2 class="promo"> Default slider title </h2>"
}?>
기본 제목 클라이언트는 슬라이더 텍스트를 입력하지 않았음을 나타냅니다.
잘 됐으면 좋겠네요.
시험:
<?php
$output = (get_field('carousel_title_text')) ? get_field('carousel_title_text'):get_field('carousel_logo');
echo $output;
?>
이미지 필드라고 생각되는 로고 설정과 관련이 있는 것 같습니다.Wordpress admin의 해당 필드 아래에 'Return value'라는 설정이 있으며, 이 설정은 'Array' 또는 'URL'로 설정할 수 있습니다.
'Array(어레이)'로 설정되어 있는 경우 해당 배열을 변수에 저장한 후 다음과 같이 마크업 속성에 액세스해야 합니다.
<?php
if ( get_field('carousel_title_text') ) { ?>
<h2 class="promo"><?php the_field('carousel_title_text'); ?></h2>
<?php } else{
$carousel_logo = get_field('carousel_logo');
if ( $carousel_logo ) { ?>
<img src="<?php echo $carousel_logo['url']; ?>" />
<?php } else { ?>
<h2 class="promo">Default slider title </h2>
<?php }
}
?>
또는 다음과 같이 이미지 URL만 반환하고 액세스하도록 필드를 설정할 수 있습니다.
<?php
if ( get_field('carousel_title_text' ) { ?>
<h2 class="promo"><?php the_field('carousel_title_text'); ?></h2>
<?php } elseif ( $carousel_logo ) { ?>
<img src="<?php the_field('carousel_logo'); ?>" />
<?php } else { ?>
<h2 class="promo">Default slider title </h2>
<?php }
?>
이미지 필드에 대한 자세한 내용은 ACF 문서를 참조하십시오.
언급URL : https://stackoverflow.com/questions/30578415/php-if-else-get-field-with-wordpress
'programing' 카테고리의 다른 글
Redux Thunk와 Redux Saga의 차이점은 무엇입니까? (0) | 2023.02.25 |
---|---|
reactj의 호버 상태에 액세스하려면 어떻게 해야 합니까? (0) | 2023.02.25 |
AJAX 요구에 의한 쿠키 송신 방지 (0) | 2023.02.25 |
Wordpress: WHY 루프에서 current_post 인덱스 번호를 가져옵니다. (0) | 2023.02.25 |
반응 JS 오류: 정의되지 않은 반응/jsx-no-def (0) | 2023.02.20 |