2010-05-12 23 views
8

Ya he desarrollado mi complemento para WordPress y puedo administrarlo desde el administrador. Pasé el acceso al archivo de complemento usando add_submenu_page. El problema es que el complemento se está ampliando y quiero usar otro archivo vinculado desde el archivo principal. Por ejemplo, tengo second_page.php?id=3. Cuando intento acceder a este enlace, obtengo unWordPress agregar una nueva página a la sección de administración

No tiene suficientes permisos 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?

Respuesta

3

Desde WP soporta de forma nativa URLs como wp-admin/admin.php?page=<your_page_handle> que puede hacer sub-pá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>, simplemente mire $ _GET y despliegue 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 varias páginas secundarias.

5

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

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

Su página se carga realmente de admin.php (por lo general). Puede agregar parámetros a sus enlaces agregando algo así como &id=3 y luego hacer que su lógica principal de carga de página 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:

He encontrado un truco que puede ser más fácil para usted, aunque no lo he probado a tope. Digamos que tiene dos páginas: my_one y my_two. Simplemente llame al add_submenu_page dos veces, y configure 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 al 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' 
    ); 
+0

Bueno, sé cómo incluir una página como page.php, ¿qué tal page.php? Id = 3? Esto cambia todo y no sé cómo hacerlo. –

+0

Agregué un método diferente que podría funcionar para usted. –

+0

5 años después, y esta respuesta aún es útil. Sin embargo @FletcherMoore, ¿sabes cómo puedo hacerlo para que 'my_toplevel_link' aún permanezca seleccionado como el menú ** principal **? –

Cuestiones relacionadas