2017-10-25 6 views
0

ACF에서 URL의 일부와 일치하는 위치를 표시하기 위해이 코드를 만들었고 예상 한대로 작동합니다.PHP에서 함수를 사용하여 사용자 정의 게시 유형에서 ACF를 반복하여 페이지에 값을 표시합니다. foreach는 함수에 넣을 때 작동하지 않습니다.

<?php 

$myurl= htmlspecialchars($_SERVER["REQUEST_URI"]); 
$myexplodes = (explode ('/', $myurl)); 
$posts = get_posts(array(
    'post_type'  => 'my_vars', 
)); 


if($posts){ 
    foreach($posts as $post){ 
     $value = get_field("location"); 
      //echo get_field("location"); 
     if($value == $myexplodes[1]) { 
      echo '<h1>' . $value . ' :this is location</h1>'; 

     } 
     else { 
     } 
    } 
} 

?> 

하지만이 코드를 함수에 넣으려고하면 전화 할 때 아무 것도 표시되지 않습니다.

function local(){ 
    if($posts){ 
     foreach($posts as $post){ 
      $value = get_field("location"); 
      //echo get_field("location"); 
      if($value == $myexplodes[1]) { 
       echo '<h1>' . $value . ' :this is location</h1>'; 

      } 
      else { 
      } 
     } 
    } 
} 

나는 그것이 바르의 범위 문제라고 의심했지만 나는 전역을 만들려고했지만 행운이 없었다.

답변

0

$ post가 WordPress 전역 변수이기 때문에 첫 번째 코드가 작동 할 수 있으므로 foreach에서 다른 변수 이름을 사용하는 것이 좋습니다.

$value = get_field("location", $article->ID); 
+0

나는 이것으로 찾고있다 : 당신이 get_field 함수 호출도 포스트 ID를 사용해야하고 싶은 일을 위해

. get_field 부분을 이해하지만 $ post중인 전역 변수에 대해 자세히 설명 할 수 있습니까? – casey

+0

Wordpress는 $ post라는 전역 변수를 사용하며 이것은 foreach에서 방해가 될 수 있습니다. foreach ($ posts는 $ post) 대신 foreach ($ articles as $ article)를 사용하십시오. – sticksu