在WordPress中传递扩展类方法作为回调函数 [英] Passing Extended Class Method as a Call-Back Function in WordPress

查看:101
本文介绍了在WordPress中传递扩展类方法作为回调函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是此问题的延续。扩展类时,它引用原始的类方法。在创建的页面中回显的类名称应为 AnotherAdminPage ,这是扩展的类名称。

This is a continuation of this question. When the class is extended, it refers to the original class method. The echoed class name in the created page should be AnotherAdminPage which is the extended class name.

/* 
    Plugin Name: static method callback demo
*/

class AnotherAdminPage extends AdminPageClass {
}

add_action('admin_menu', AnotherAdminPage::_admin_menu());

class AdminPageClass {

    static function _admin_menu() {
        $class_name = get_class();
        $classinstance = new $class_name();
        return array(&$classinstance, "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">
            <p><?php echo get_class(); ?></p>
        </div>
        <?php
    }
}

重新定义扩展类中的方法,但在那种情况下对其进行扩展变得毫无意义。

It works by redefining the methods in the extended class but it becomes somewhat pointless to extend it in that case.

class AnotherAdminPage extends AdminPageClass {

    static function _admin_menu() {
        $class_name = get_class();
        $classinstance = new $class_name();
        return array(&$classinstance, "admin_menu");
    }   
    function admin_page() {
        ?>
        <div class="wrap">
            <p><?php echo get_class(); ?></p>
        </div>
        <?php
    }   
}

推荐答案

我自己发现这可行。

/* 
    Plugin Name: extended class method as a callback demo
*/

class AnotherAdminPage extends AdminPageClass {
}

add_action('admin_menu', array(new AnotherAdminPage, "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">
            <p><?php echo get_class($this); ?></p>
        </div>
        <?php
    }   
}

这篇关于在WordPress中传递扩展类方法作为回调函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆