web-dev-qa-db-fra.com

add_submenu_page rappeler un fichier au lieu d'une fonction?

Je veux nettoyer les options de mon thème car je ne peux pas tout garder en mémoire. Comment puis-je faire en sorte que mon page_callback soit lié à un fichier au lieu d'un rappel?

Je sais que je pourrais inclure le fichier dans le rappel, mais pourquoi si je peux simplement appeler le fichier ici?

  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
Ben Racicot

Au lieu de courir jusqu'à trac et de me plaindre d'une fonctionnalité manquante, je suggère d'utiliser une construction OOP:

// 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
    }
}

Ce n'est pas la dernière chose à faire, mais cela devrait vous amener sur la route pour mieux organiser les choses.

2
kaiser

En termes simples - parce que le rappel est suffisant pour tout faire, y compris le chargement de fichier. :) Cela ne vaut pas la peine de compliquer la logique pour quelque chose qui est déjà non seulement possible mais trivial.

0
Rarst