WordPress agrega una nueva página a la sección de administración

3 minutos de lectura

avatar de usuario
Manny Calavera

Ya he desarrollado mi complemento para WordPress y puedo administrarlo desde el administrador. He pasado el acceso al archivo del complemento usando add_submenu_page. El problema es que el complemento se está extendiendo y quiero usar otro archivo que está vinculado desde el archivo principal. por ejemplo tengo second_page.php?id=3. Cuando trato de acceder a este enlace, obtengo un

No tiene permisos suficientes para acceder a esta página.

mensaje. Quiero “validar” esta página también para usarla con este script y no sé cómo. ¿Ideas?

avatar de usuario
flecher moore

Cuando agrega una página con add_submenu_page()la URL debe ser algo como:

wp-admin/admin.php?page=<your_page_handle>

Tu página está realmente cargada desde admin.php (típicamente). Puede agregar parámetros a sus enlaces agregando algo como &id=3 y luego haga que la lógica de carga de la página del complemento principal determine qué archivo incluir en función del parámetro.

Por ejemplo

if (isset($_GET['id']) && ((int) $_GET['id']) == 3) {
  include 'second_page.php';
} else {
  include 'first_page.php';
}

Editar:

Encontré un truco que puede ser más fácil para ti, aunque no lo he probado a fondo. Digamos que tienes dos páginas: my_one y my_two. Solo llama add_submenu_page dos veces y establezca el padre de la segunda página como la primera página. Esto hará que WordPress no agregue un enlace a la barra de navegación, pero aún puede acceder a su página navegando a admin.php?page=my_two.

Ejemplo:

    add_submenu_page( 
          'my_toplevel_link'   
        , 'Page Title'
        , 'Link Name'
        , 'administrator'
        , 'my_one' // here's the page handle for page one
        , 'my_one_callback'
    );
    add_submenu_page( 
          'my_one'  // set the parent to your first page and it wont appear
        , 'Page Title'
        , 'Link Name'  // unused
        , 'administrator'
        , 'my_two'
        , 'my_two_callback'
    );

  • Bueno, sé cómo incluir una página como page.php, ¿qué hay de page.php?id=3? Esto cambia todo y no sé cómo hacerlo.

    – Manny Calavera

    12 mayo 2010 a las 22:42


  • 5 años después, y esta respuesta sigue siendo útil. Sin embargo, @FletcherMoore, ¿sabe cómo puedo hacerlo para que my_toplevel_link aún permanece seleccionado como el principal ¿menú?

    – Sylvan D Ash

    26 de junio de 2015 a las 8:56

  • Guau. Lo siento. Ni siquiera recuerdo nada sobre WordPress o lo que estaba escribiendo aquí. Ha pasado demasiado tiempo.

    –Fletcher Moore

    26 de junio de 2015 a las 23:33

avatar de usuario
Esteban R.

Dado que WP admite de forma nativa URL como wp-admin/admin.php?page=<your_page_handle> puedes hacer subpáginas con algo como:

wp-admin/admin.php?page=yourpage

wp-admin/admin.php?page=yourpage&sub=2

wp-admin/admin.php?page=yourpage&sub=3

Luego en el código que maneja wp-admin/admin.php?page=<your_page_handle> solo mira el $_GET y abre la página principal o una subpágina según sea necesario.

Definitivamente he visto complementos en los que la página de administración tiene una pequeña fila de enlaces en la parte superior que vincula las distintas subpáginas.

¿Ha sido útil esta solución?