설정 변수를 지정합니다.php 단, 바닥글에는 표시되지 않습니다.php
wordpress에서, 나는 헤더에 변수를 설정합니다.php
<?php
$var= 'anything'
?>
바닥글자에요.에코할 때 php
<?php
echo $var;
?>
인쇄한 게 없는데...왜!>
헤더 파일과 바닥글 파일이 함수 본문에 포함되어 있으므로 동일한 범위에 속하지 않습니다.따라서 로컬 변수를 선언하고 (다른 함수에서) 다른 로컬 변수를 참조합니다.
따라서 변수를 글로벌하게 선언합니다.
$GLOBALS[ 'var' ] = '...';
그 후, 다음과 같이 입력합니다.
echo $GLOBALS[ 'var' ];
나는 당신이 이 질문에 대한 답을 이미 받아들인 것을 알고 있습니다; 하지만 가변 범위 문제에 대한 훨씬 더 나은 접근법이 있다고 생각합니다.$GLOBALS어레이를 설정합니다.
를 사용하다functions.php예를 들어, 테마에 파일을 입력합니다.이 파일은 의 범위 밖에 있습니다.get_header()그리고.get_footer()기능들.사실 이것은 당신이 당신의 테마에서 하고 있는 다른 어떤 작업보다 우선합니다(그리고 저는 플러그인 범위도 믿고 있습니다--그것도 확인해야 합니다).
헤더/풋더 파일에서 사용할 변수를 설정하려면 함수에서 해당 변수를 설정해야 합니다.$GLOBALS 어레이를 오염시키지 않고 php 파일을 만듭니다.확인할 변수가 더 있는 경우 getters/setters와 함께 기본 레지스트리 개체를 사용하는 것을 고려해 보십시오.이렇게 하면 변수를 제어할 수 있는 범위에서 더 잘 캡슐화할 수 있습니다.
레지스트리
여기 샘플이 있습니다.Registry다음 경우에 시작하는 클래스:
<?php
/**
* Registry
*
* @author Made By Me
* @version v0.0.1
*/
class Registry
{
# +------------------------------------------------------------------------+
# MEMBERS
# +------------------------------------------------------------------------+
private $properties = array();
# +------------------------------------------------------------------------+
# ACCESSORS
# +------------------------------------------------------------------------+
/**
* @set mixed Objects
* @param string $index A unique index
* @param mixed $value Objects to be stored in the registry
* @return void
*/
public function __set($index, $value)
{
$this->properties[ $index ] = $value;
}
/**
* @get mixed Objects stored in the registry
* @param string $index A unique ID for the object
* @return object Returns a object used by the core application.
*/
public function __get($index)
{
return $this->properties[ $index ];
}
# +------------------------------------------------------------------------+
# CONSTRUCTOR
# +------------------------------------------------------------------------+
public function __construct()
{
}
}
이 클래스를 테마에 저장하십시오(예:/classes/registry.class.php파일 맨 위에 포함functions.php파일: include( get_directory() . '/syslog/syslog.class.syslog' );
사용 예
변수 저장:
$registry = new Registry();
$registry->my_variable_name = "hello world";
변수 검색 중:
echo '<h1>' . $registry->my_variable_name . '</h1>'
레지스트리는 모든 변수 유형을 받아들입니다.
주의: 보통 내부 데이터스토어로 SplObjectStorage를 사용하지만 이 경우 일반 ole 어레이로 교체했습니다.
좀 오래된 질문이라는 것을 알고 있습니다.솔루션 투표로 다른 옵션을 공유해야겠다고 생각하고 Globals를 사용하지 않고 더 좋은 솔루션을 찾았습니다.
function fn_your_var_storage( $var = NULL )
{
static $internal;
if ( NULL !== $var )
{
$internal = $var;
}
return $internal;
}
// store the value
fn_your_var_storage( 'my_value' );
// retrieve value
echo fn_your_var_storage(); // print my_value
이 코드를 사용해 보세요.
먼저 초기 변수 정의
$var="something";
$_GLOBALS를 사용합니다.
$_GLOBALS['myvar']=$var;
마지막으로 글로벌 변수를 원하는 장소에서 사용할 수 있습니다.
global $myvar;
$_GLOBALS 내부의 문자열을 글로벌 변수 이름으로 정의하거나 글로벌을 사용하지 않고 $_GLOBALS['myvar']를 코드에 직접 사용합니다.
wordpress Header, any template에서는 Footer는 다른 함수이기 때문에 모든 변수를 글로벌 변수로 선언해야 액세스 할 수 있습니다.
/** header.php **/
<?php
global $xyz;
$xyz="123456"; ?>
/** Template.php or Footer.php **/
<?php
echo $xyz; ///return 123456
?>
언급URL : https://stackoverflow.com/questions/2434725/setting-variable-in-header-php-but-not-seen-in-footer-php
'source' 카테고리의 다른 글
| Jackson의 @JsonSubTypes는 다형성 디시리얼라이제이션에 여전히 필요한가요? (0) | 2023.03.21 |
|---|---|
| Angular에서 변경된 입력 필드를 표시하는 방법JS (0) | 2023.03.21 |
| JSON 요소 접근 (0) | 2023.03.21 |
| 알 수 없는 공급자: $modalProvider <- 각도에서의 $modal 오류JS (0) | 2023.03.21 |
| Wordpress localhost 설치 오류 - PHP 설치에 WordPress에 필요한 MySQL 확장자가 없는 것 같습니다. (0) | 2023.03.21 |