반응형
WordPress에서의 콜백 함수로서의 클래스 전달방법
클래스 방식을 콜백 함수 파라미터로 전달하는 방법을 찾고 있습니다.
주로 사용합니다.create_function()
아래와 같이 하지만 속도가 느리고 디버그가 어렵다고 들었습니다.
add_action('init', create_function('', '$o = new AdminPageClass;'));
class AdminPageClass {
function __construct() {
add_action('admin_menu', array(&$this, 'admin_menu'));
}
function admin_menu() {
add_options_page(
'Sample Admin Page Class',
'Sample Admin Page Class',
'manage_options',
'sample_admin-page_class',
array(&$this, 'admin_page'));
}
function admin_page() {
?>
<div class="wrap">
<h1>Hi there</h1>
<p>Hello World!</p>
</div>
<?php
}
}
물론 이와 같은 추가 기능으로 가능합니다만, 가능하다면 빼고 싶습니다.
add_action('init', 'load_admin_page_class');
function load_admin_page_class() {
$o = new AdminPageClass;
}
또한 클래스 개체를 인스턴스화하기 전에 생성하면 가능하지만 추가 줄도 생성됩니다.
$o = new AdminPageClass;
add_action('admin_menu', array(&$o, 'admin_menu'));
class AdminPageClass {
function admin_menu() {
add_options_page(
'Sample Admin Page Class',
'Sample Admin Page Class',
'manage_options',
'sample_admin-page_class',
array(&$this, 'admin_page'));
}
function admin_page() {
?>
<div class="wrap">
<h1>Hi there</h1>
<p>Hello World!</p>
</div>
<?php
}
}
저는 항상 클래스를 별도의 파일로 정의하기 때문에 메인 플러그인 파일에서 줄을 줄이는 첫 번째 방법을 선호합니다.그러나 언급한 바와 같이, 사용.create_function()
피해야 합니다.
알려주셔서 감사합니다.
저는 정적인 방법을 만들 필요가 전혀 없다는 것을 알았습니다.
add_action('admin_menu', array(new AdminPageClass, "admin_menu"));
class AdminPageClass {
function admin_menu() {
add_options_page(
'Sample Admin Page Class',
'Sample Admin Page Class',
'manage_options',
'sample_admin_page_class',
array(&$this, 'admin_page'));
}
function admin_page() {
?>
<div class="wrap">
<h1>Hi there</h1>
<p>Hello World!</p>
</div>
<?php
}
}
클래스 인스턴스와 메서드 이름이 포함된 배열을 반환하는 정적 메서드를 만듭니다.
/*
Plugin Name: static method callback demo
*/
add_action('admin_menu', AdminPageClass::_admin_menu());
class AdminPageClass {
static function _admin_menu() {
$class_name = get_class();
$classinstance = new $class_name();
return array(&$classinstance, "admin_menu");
}
function admin_menu($instantiate=false) {
add_options_page(
'Sample Admin Page Class',
'Sample Admin Page Class',
'manage_options',
'sample_admin-page_class',
array(&$this, 'admin_page'));
}
function admin_page() {
?>
<div class="wrap">
<h1>Hi there</h1>
<p>Hello World!</p>
</div>
<?php
}
}
언급URL : https://stackoverflow.com/questions/12794152/passing-class-method-as-a-call-back-function-in-wordpress
반응형
'programing' 카테고리의 다른 글
스크롤뷰 터치 핸들링 내의 수평 스크롤뷰 (0) | 2023.09.13 |
---|---|
이 jQuery ajax 클릭 이벤트가 여러 번 발생하는 이유는 무엇입니까? (0) | 2023.09.13 |
컴파일 오류: 프로그램의 stray '\302' 등 (0) | 2023.09.13 |
XML에서 따옴표를 사용합니다. 한 개입니까, 두 개입니까? (0) | 2023.09.13 |
선택한 사용자 지정 관리 하위 메뉴를 수동으로 설정하는 방법은 무엇입니까? (0) | 2023.09.13 |