programing

WordPress를 사용한 PHP if/else get_field()

lastmemo 2023. 2. 25. 19:41
반응형

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가지 다른 리턴 값이 있습니다.

[ Return Values for Image ]필드

주의: 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

반응형