ADD_SUBMENU_PAGE回调文件而非函数?

时间:2012-10-09 作者:Ben Racicot

我想清理我的主题选项,因为我无法跟踪所有内容。如何让我的page\\u回调链接到文件而不是回调?

我知道我可以在回调中包含该文件,但为什么我可以在这里调用该文件呢?

  add_submenu_page( 
              null            // -> Set to null - will hide menu link
            , \'Page Title\'    // -> Page Title
            , \'Menu Title\'    // -> Title that would otherwise appear in the menu
            , \'administrator\' // -> Capability level
            , \'menu_handle\'   // -> Still accessible via admin.php?page=menu_handle
            , \'page_callback\' // -> To render the page
        );

2 个回复
SO网友:kaiser

我建议使用OOP构造,而不是运行到trac并抱怨缺少功能:

// File: base.class.php
abstract class wpse67649_admin_page_base
{
    public function add_page()
    {
        add_submenu_page( 
             null            // -> Set to null - will hide menu link
            ,\'Page Title\'    // -> Page Title
            ,\'Menu Title\'    // -> Title that would otherwise appear in the menu
            ,\'administrator\' // -> Capability level
            ,\'menu_handle\'   // -> Still accessible via admin.php?page=menu_handle
            ,array( $this, \'render_page\' ) // -> To render the page
        );
    }

    // Must get defined in extending class
    abstract function render_page();
}

// File: ___sub_page.class.php
class wpse67649_render_sub_page extends wpse67649_admin_page_base
{
    public function __construct()
    {
        add_action( \'admin_init\', array( $this, \'add_page\' ) );
    }

    public function render_page()
    {
        // You have access to every $this->class_var from your parent class
        ?>
<div class="wrapper>
    <!-- do funky page rendering -->
</div>
        <?php
    }
}
这还不是最后一件事,但它应该会让你走上更好地组织事情的道路。

SO网友:Rarst

简单地说,因为回调足以执行任何操作,包括加载文件。:)对于那些已经不仅可能而且微不足道的事情,把逻辑复杂化是不值得的。

结束

相关推荐