Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

Añadir páginas al plugin sin que aparezcan en el menú del backend

Estas en el tema de Añadir páginas al plugin sin que aparezcan en el menú del backend en el foro de WordPress en Foros del Web. Hola, Estoy haciendo un plugin y tengo un pequeño problema que me está retrasando en el desarrollo global del proyecto. He aprendido cómo añadir opciones ...
  #1 (permalink)  
Antiguo 18/06/2012, 06:04
 
Fecha de Ingreso: marzo-2012
Mensajes: 14
Antigüedad: 12 años
Puntos: 4
Añadir páginas al plugin sin que aparezcan en el menú del backend

Hola,

Estoy haciendo un plugin y tengo un pequeño problema que me está retrasando en el desarrollo global del proyecto.
He aprendido cómo añadir opciones al menú del plugin. Básicamente, creando una función y luego anclándola en el menú interno con add_menu_page o add_submenu_page. Ahora mismo tengo 4 opciones en el plugin, quedando de esta manera:



El problema que tengo es que toda función que añada se me va a ver en el menú lateral y ahora mismo cuento con 2 funciones a las que debo llamar (y visualizar como página en el backend) pero no deben aparecer en el menú.
Son las que aparecen señaladas, y en este caso en concreto es porque al pinchas en "editar" o en "borrar" desde el listado la función recibe el id de la fila que quiero editar o borrar, mientras que si escojo una de esas opciones desde el menú evidentemente no se la relaciona con ningún id.

¿Existe alguna manera de que WordPress trate una función del plugin como una página interna (similar a add_menu_page o add_submenu_page) pero SIN figurar en el menú de opciones lateral?

Añado el código de la función que tengo para "borrar":

Código PHP:
function borrar_partner() { ?>
    <div class="wrap">
        <?php
        
global $wpdb;
        
$tabla_empresas $wpdb->prefix "gp_empresas";
        
        if(isset(
$_GET['id'])) {
            
$id_empresa $_GET['id'];
            
$myrow $wpdb->get_row($wpdb->prepare("SELECT * FROM `$tabla_empresas` WHERE `id_empresa`='$id_empresa'"));
            
$nombre $myrow->nombre;
            
            if(isset(
$_POST['borrar'])) {
                
$sql "DELETE FROM `$tabla_empresas` WHERE `id_empresa`='$id_empresa'";
                
$wpdb->query($sql); ?>
                
                <div class="mensaje">
                    Se ha eliminado el partner <strong><?php echo "$nombre"?></strong> del directorio de empresas
                </div>
                </br>
                <?php page_ppal(); // Esta función muestra el listado completo de filas
            
}
            else {
                
?>
                <h2>Borrar partner</h2>
                <p>Has indicado que quieres borrar la siguiente empresa de la base de datos:<p>
                <p>ID: <?php echo "<strong>$id_empresa</strong>  ";?> Nombre: <?php echo "<strong>$nombre</strong>"?></p>
                <form method="post" action="" />
                    <?php submit_button__'Confirmar borrado'), 'primary''borrar'true); ?>
                </form>
            <?php
            
}
        } else {
            echo 
"ERROR: El formulario no ha recibido id mediante \$_GET[id]";
            echo 
"</br>";
        } 
?>
    </div>
<?php
}
Y la añado al menú del plugin con add_submenu_page:

Código PHP:
function  menu_plugin_partners() {
    
add_menu_page('Partners''Partners'2__FILE__'page_ppal');
    
add_submenu_page(__FILE__'partners''A&ntilde;adir partner'10'add-partner''add_partner');
    
add_submenu_page(__FILE__'partners''Editar partner'10'edit-partner''edit_partner');
    
add_submenu_page(__FILE__'partners''Borrar partner'10'borrar-partner''borrar_partner');
}

add_action('admin_menu''menu_plugin_partners'); 
He probado a meter en 2 archivos las funciones de borrar y editar, pero al intentar acceder a ellos me sale que no tengo permisos para tal operación ><

Saludos y gracias de antemano.
  #2 (permalink)  
Antiguo 26/06/2012, 03:35
 
Fecha de Ingreso: marzo-2012
Mensajes: 14
Antigüedad: 12 años
Puntos: 4
Respuesta: Añadir páginas al plugin sin que aparezcan en el menú del backend

¿Alguna idea? ¿Nadie ha hecho un plugin y se ha encontrado con este problema?
  #3 (permalink)  
Antiguo 03/07/2012, 08:27
 
Fecha de Ingreso: marzo-2012
Mensajes: 14
Antigüedad: 12 años
Puntos: 4
Respuesta: Añadir páginas al plugin sin que aparezcan en el menú del backend

Después de varios días de búsqueda he encontrado la solución, que al final era una chorradilla.

Código PHP:
<?php
function  menu_plugin_partners() {
    
add_menu_page('Partners''Partners'2__FILE__'page_ppal');
    
add_submenu_page(__FILE__'partners''A&ntilde;adir partner'10'add-partner''add_partner');
    
add_submenu_page(null'partners''Editar partner'10'edit-partner''edit_partner');
    
add_submenu_page(null'partners''Borrar partner'10'borrar-partner''borrar_partner');
}

add_action('admin_menu''menu_plugin_partners');
?>

Lo que había que hacer era poner a null el parent-slug (a quien se ancla esa página como submenú), de esta manera no figura en el submenú de nadie pero wordpress la entiende como una página propia y cuando la llamemos tendrá el menú lateral, la barra de admin, los estilos, y todo lo necesario para que se vea como una página del backend.

No entiendo por qué he tardado en encontrarlo, esto debería figurar en la página del Codex de wordpress :P
  #4 (permalink)  
Antiguo 03/07/2012, 15:02
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Respuesta: Añadir páginas al plugin sin que aparezcan en el menú del backend

Hola, buenísimo que lo hayas solucionado. Yo no tenía idea cuando leí tu tema. De hecho, en el desarrollo de plugins estoy en pañales... de adultos y usados.

Hay muuuuuuchas de cosas que no están en el codex o están incompletas. Esos son los que generan verdaderos retos. Bien ahí!
__________________
...___...
  #5 (permalink)  
Antiguo 09/07/2012, 08:45
 
Fecha de Ingreso: marzo-2012
Mensajes: 14
Antigüedad: 12 años
Puntos: 4
Respuesta: Añadir páginas al plugin sin que aparezcan en el menú del backend

Me fastidia mucho cuando la gente consigue resolver sus dudas y no lo comenta en el foro. ¿Hay tiempo para preguntar pero no para postear si lo resolvieron?
Yo procuro siempre cerrar mis temas, incluso me pienso un poco el asunto que le voy a poner cuando creo un post nuevo para que sea identificable.

No entiendo como en el codex falta tanta información

Saludos!!

Etiquetas: backend, página, páginas, php, plugin, post, tema
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:39.