2012-08-11 2 views
0

제 문제는 제 상수가 내 플러그인 내 깊숙이 포함 된 파일에 전역 적으로 사용 가능하지 않다는 것입니다. 설명하겠습니다. 내 주요 워드 프레스 플러그인 파일에서 플러그인의 Wordpress 상수는 포함 된 파일에서 사용할 수 없습니다.

는 매우 첫 번째 줄은 바로 필요/* 플러그인 이름 다음에 : ㅋ ㅋ 등 ㅋ ㅋ ... */나는 그렇게

require_once(plugin_dir_path(__FILE__) . 'constants.php'); 

처럼 내 __construct 내에서 다음을 내 상수를 포함() 함수는 내가 다른 너무

require_once(TRADESHOW_DIR . 'structure/build_menu.php'); 

build_menu.php 파일은 각 메뉴 페이지에 해당 페이지에 MOR의 require_once를 호출와 라우터로 작동과 같은 워드 프레스의 관리자 섹션에서 메뉴 항목을 기반으로 파일 및 하위 메뉴를 포함 . 여기 내가 이해하지 못하는 곳이 있습니다. build_menu.php 내에서 나는 여전히 그들을 사용하여 wordpress 데이터베이스 쿼리를하는 데 사용하는 내 상수에 대한 액세스 권한이 있지만 바로 뒤에 포함 된 파일 내에서 상수에 액세스 할 필요가 없습니다. 여기 코드는 : 당신이이 주 플러그인 내에 포함 내에 포함입니다 볼 수

//// build_menu.php 

function tradeshow_all_forms() {// callback from a wordpress add_submenu_page() function 
    global $wpdb; 

    $TS = new Bio_Tradeshow_Request_Plugin();// store plugin class in variable 

    if(isset($_GET['form_id']) && is_integer(intval($_GET['form_id']))) { 
    $form = $wpdb->get_results(
     " 
      SELECT * 
      FROM " . TRADESHOW_FORMS . " 
      WHERE id = '" . $_GET['form_id'] . "' 
     " 
    ); 
    $form = $form[0]; 

    echo TRADESHOW_SUBMITTED . ' build_menu.php<br />';// echo's out the correct value 
    require_once(TRADESHOW_DIR . 'structure/fill_form.php'); 
    } 
} 

여기

$user_id = $TS->user(); 
$user_id = $user_id['id']; 

$form_aswers = $wpdb->get_row(// returns nothing because TRADESHOW_SUBMITTED doesn't work 
    " 
     SELECT answers 
     FROM " . TRADESHOW_SUBMITTED . " 
    WHERE user_id = '$user_id' AND form_id = '$form->id' 
    ", 
    ARRAY_A 
); 

echo TRADSHOW_SUBMITTED;// echoes out TRADESHOW_SUBMITTED as a string and not a variable 

그래서 fill_form.php 파일의 상단 부분입니다.

또한 누구든지 내게이 플러그인의 변수가 플러그인에 포함 된 파일에서 사용할 수없는 이유를 설명 할 수 있다면. 나는

static $_o = null; 
static public function init() { 
    if (self::$_o === null) 
     self::$_o = new self; 
    return self::$_o; 
} 

그래서 $ 변수 = 새로운 plugin_class을 할 수있는 내 플러그인의 상단이있다; require 또는 require_once를 사용하여 파일을 포함 할 때 무언가가 손실되면 이해하고 싶습니다.

+0

fill_form.php에서 사용할 수없는 변수가 무엇인지 분명하지 않습니다. http : //www.php를 검토하고 싶습니다. .net/manual/ko/language.variables.scope.php. 이 Q가 얼마 전에 게시되었습니다. 이미 알고 있습니까? –

답변

0
FROM " . self::TRADESHOW_SUBMITTED . " 

플러그인을 작성할 때 플러그인은 항상 100 % 내부 클래스이므로 항상이 기능을 사용할 수 있습니다. __construct()에서 상수를 정의하고 자습서로 자식 클래스에서 호출합니다.

+0

PHP 치명적 오류 : 클래스 범위가 활성화되지 않은 경우 self ::에 액세스 할 수 없습니다 –

+0

@MariusMiliunas Bio_Tradeshow_Request_Plugin의 __construct()에 상수를 포함하여 시도 했습니까? –

관련 문제