2010-12-07 6 views
1

특정 변수를 정의하는 functions.php 파일에 함수가 있습니다.범위 : 함수에서 정의 된 변수 사용

add_action('the_post', 'paginate_slide'); 

function paginate_slide($post) { 

    global $pages, $multipage, $numpages; 

    if(is_single() && get_post_type() == 'post') { 

    $multipage = 1; 
    $id = get_the_ID(); 
    $custom = array(); 
    $pages = array(); 
    $i = 1; 

    foreach(get_post_custom_keys() as $key) 
     if (false !== strpos($key, 'slide')) 
      $custom[$key] = get_post_meta($id, $key, true); 

    while(isset($custom["slide{$i}-title"])) { 

     $page = ''; 
     $tzTitle = $custom["slide{$i}-title"]; 
     $tzImage = $custom["slide{$i}-image"]; 
     $tzDesc = $custom["slide{$i}-desc"]; 
     $tzEmbed = $custom["slide{$i}-embed"]; 

     $page = "<h2>{$tzTitle}</h2><img src='{$tzImage}' />"; 
     $pages[] = $page; 
     $i++; 
    } 

    $numpages = count($pages); 
    } 
} 

다음과 같은 template.php 파일에서 이러한 변수 중 일부를 출력하고 싶습니다. <?php echo $tzDesc; ?>으로 보일 수는 없습니다. 그것을 작동 시키십시오. 내가 variables scope에 대해 이해 한 바에 따르면 이러한 변수를 다른 곳에서 호출하기 위해서는 전역 범위 내에서 변수를 정의하고 $pages, $multipage, $numpages;처럼이 함수에서 전역 변수로 호출해야합니다. 그게 내가 필요한 곳에 그 변수들을 연결시켜 줄 수 있어야한다. 문제는 함수를 함수 밖으로 가져와 전역 함수 내에서 위에 정의 할 때 전체 함수가 작동을 멈출 때입니다.

사이트의 어느 곳에서나 <?php echo $tzDesc; ?>을 호출하여 정의 된 정보를 반향시킬 수 있도록 어떻게 구조화해야합니까?

이것이 중요한지는 모르지만 이것은 WordPress 사이트에 있습니다.

답변

2

어쨌든 <?php echo $tzDesc; ?>을 사용하려면 $tzDesc을 전역 변수로 정의해야합니다. 그러나 글로벌 변수는 으로 불리우므로 프로그래밍 연습으로 간주하므로 권장하지 않습니다.

더 좋은 해결책은 paginate_slide()$post 개체에 $tzDesc (및 다른 값)을 더하는 것입니다. 그러면 언제든지 the_post()으로 전화하면 이러한 변수에 액세스 할 수 있습니다. 이 경로를 선택하는 경우 변수 이름 공간을 지정해야합니다.

$post->ns_tzDesc = $tzDesc; 
+0

$ post 객체에 추가하면 더 나은 해결책이 될 것입니다. 내가 어떻게 그럴 수 있니? 솔직히 말하면 $ post가 정의 된 곳이 어디인지 잘 모르겠습니다. 도움이된다면, 이것은 Wordpress 사이트에 있습니다. – mattz

+0

'$ pages' -'$ pages [] = $ page;'를 어떻게 수정하는지와 매우 비슷합니다. 업데이트를보십시오. –

+0

나는 그것을 시도하고 그것은'치명적인 오류 : 형식으로 stdClass의 객체를 배열로 사용할 수 없다 ... '라고 말했다. – mattz