2013-10-13 3 views
0

플러그인을 쓰고 있는데 플러그인 코드의 특정 기능을 트리거 할 때 어려움을 겪고 있습니다. 당으로WordPress Plugin Shortcodes 전에 이벤트 호출

/* 
// Plugin information goes here 
*/ 


// ***** Area A 

$GLOBALS['example_class'] = new example_class; 

class example_class { 

    // ***** Area B 

    public function admin_init() { 
     add_menu_page(

      // ... 

     ); 
    } // End of admin_init function 
} // End of example class 

add_action('init', function() { 
    global $example_class; 

    // ***** Area C 

    if (??????) { 

     // Sanitize and set the view role 
     $view = (isset($_REQUEST['view'])) ? sanitize_key($_REQUEST['ex']) : 'get_all'; 
     // Manage submitted data 
     switch ($view) { 

      // ... 

     } // End of switch for view 

     // Sanitize and set the action role 
     $action = (isset($_REQUEST['action'])) ? sanitize_key($_REQUEST['action']) : NULL; 
     // Manage submitted data 
     switch ($action) { 

      //... 

     } // End of switch for action 

    } // End of if page is being shown 
}); 

add_action('admin_menu', function() { 
    global $example_class; 
    $example_class->admin_init(); 
}); 

add_shortcode('show_public_random', function() { 
    global $example_class; 
    // ... 
}); 

는 stackexchange에 in a previous post, 내가 init 이벤트에 의해라는 함수에 내 플러그인의 컨트롤러 측을 분리 제안했다. 그러나 모든 페이지로드시 init 이벤트 함수에 포함 된 코드를 평가하지 않으려 고합니다. 단축 코드가 포함 된 페이지가로드 될 때만 내 코드를 평가하기를 원합니다.

나는 false로 초기화되지만 add_shortcode 함수 내에서 true로 변경되는 부울 클래스 변수를로드하려고 시도했지만 그때까지는 너무 늦었습니다. init 이벤트가 발생하고 함수의 내용이 실행되지 않습니다.

제 코드 - C 영역에서 어떤 표현을 사용해야합니까? 짧은 코드를 사용할 때만 init 이벤트 기능이 실행되도록하려면 어떻게해야합니까?

+0

무엇을 확인 하시겠습니까? – codepixlabs

+0

'init'은 실행될 첫 번째 것을 의미합니다. 그 전에는 아무 일도 일어나지 않을 것입니다. 아마 다른 적절한 후크와 함수를 연결해야합니다. – codepixlabs

+0

무엇을 보여줄지 결정하기 위해 액션과 뷰를 기반으로 조건을 실행해야합니다. 페이지에서, 내가 선택한 apt hook은 shortcode가 호출되기 전에 있어야합니다. –

답변

0

지저분하지만 답변을 찾았습니다.

영역 A 사용자가 내 플러그인과 상호 작용할 때 함께 변수를 제출했는지 확인하기위한 조건문을 설정했습니다. 플러그인이 광산 인 경우 코드가 평가되고 actionview 모드가 평가됩니다. 또한이 함수는 클래스 변수 public_loaded을 true로 설정합니다.

영역 C에서 클래스 문이 true로 설정되었는지 확인하기 위해 조건문을 설정했습니다. 그렇지 않은 경우 기본보기가 단축 코드로 설정됩니다.