2013-07-11 4 views
0

저는 Wordpress Advanced Custom Fields로 상당히 기본적인 설정을했습니다. 사용자 정의 게시물에 추가 필드를 추가 한 다음 게시 페이지에 표시해야 할 필요가 있습니다. 나는 작동하는이 코드를 가지고 있지만 여러 체크 박스 선택이있는 사용자 정의 필드에 도착했을 때 분명히 특정 필드가 배열이라는 이유로 'array'라는 단어를 덤프합니다.배열 덤핑

어떻게이 코드를 만들 수 있습니까? 일반 필드와 배열이있는 필드의 모든 레이블과 데이터를 덤프하십시오. 당신은 어떤 종류의 검사를 수행해야합니다

<?php 

$fields = get_field_objects(); 
if($fields) 

{ 
echo '<div class="item-info-custom">'; 
     echo '<dl class="item-custom">'; 
     echo '<dt class="title"><h4>Custom Information</h4></dt>'; 
      foreach($fields as $field_name => $field) 
       { 
         echo '<dt class="custom-label">' .   $field['label'] . ': </dt>'; 
        echo '<dd class="custom-data">'; 

if (is_array($field['value'])) { 
echo implode(', ', $field['value']); 
} 
else { 
echo $field['value']; 
} 

echo '</dd>'; 
       } 

     echo '</dl>'; 
echo '</div>'; 
} 

?> 
+0

필드가 배열이면 - 그렇지 않으면 한 가지 - 다른 작업을 수행하십시오. –

+0

아마도 is_array 함수를 사용하여 추가 조건을 추가하면됩니다. $ field가 배열 인 경우 additionnal 루프를 추가합니다. – user

답변

0

:

$fields = get_field_objects(); 
if($fields) 

{ 
echo '<div class="item-info-custom">'; 
     echo '<dl class="item-custom">'; 
     echo '<dt class="title"><h4>Custom Information</h4></dt>'; 
      foreach($fields as $field_name => $field) 
       { 
        echo '<dt class="custom-label">' . $field['label'] . ': </dt>'; 
        echo '<dd class="custom-data">' . $field['value'] . '</dd>'; 
       } 

     echo '</dl>'; 
echo '</div>'; 
} 

이 내가 일을하는 데 최종 코드입니다. is_array()과 같은 기능을 사용할 수 있으며 추가 로직을 수행 할 수 있습니다. 예를 들어

:

echo '<dd class="custom-data">'; 

if (is_array($field['value'])) { 
    echo implode(', ', $field['value']); 
} 
else { 
    echo $field['value']; 
} 

echo '</dd>'; 
+0

이것이 작동하도록 만들 수있는 것입니다. 나는 다른 사람들도 자리를 잡았을 것이라고 확신한다. 나는 그들을 알아낼 수 있을지 모르겠다. 이것은 내가 사용한 마지막 코드입니다. 당신이 어떤 이슈를 보게되면, 그것이 내가 예상 한대로 작동하는 것처럼 보인다는 것을 알려주십시오. – OcalaDesigns

+0

좋습니다. 다른 이들은 비슷한 논리를 가졌습니다. 또한 재귀 적 솔루션을 시연했습니다. 그러나 그것은 아마도 과잉이다. –

+0

제이슨 감사합니다! – OcalaDesigns

1

$ 필드 [ '값']의 배열의 구성에 따라 다음 중 하나를 수행 할 수 있습니다 :

이 값을 당신이 할 수있는 간단한 목록이 있다면 그것들을 내파로 함께 묶어 라.

echo '<dd class="custom-data">' . (is_array($field['value'])?implode(", ", $field['value']:$field['value']) . '</dd>'; 

배열은 배열을 렌더링하고 당신이 배열 값을 발생할 때 재귀 적으로 호출하는 기능을 만들 수 있습니다 (레이블과 값 키) 주요 배열과 같은 표현 데이터를 포함하는 경우

.

<?php 

function showFields($data){ 
echo '<div class="item-info-custom">'; 
     echo '<dl class="item-custom">'; 
     echo '<dt class="title"><h4>Custom Information</h4></dt>'; 
      foreach($fields as $field_name => $field) 
       { 
        echo '<dt class="custom-label">' . $field['label'] . ': </dt>'; 
        if (is_array($field['value'])){ 
         showFields($field['value']); 
        } 
        echo '<dd class="custom-data">' . $field['value'] . '</dd>'; 
       } 

     echo '</dl>'; 
echo '</div>'; 
} 
$fields = get_field_objects(); 
if($fields) showFields($fields); 
+0

시간 내 주셔서 감사합니다. – OcalaDesigns