Añadir opciones al menú administrador

Retrofox, me pregunta en el foro como podemos añadir opciones al menú administrador mediante plugins, y la verdad es que el sistema que Wordpress implementa para esto es muy interesante, así que deberíamos echarle un vistazo a lo que nos ofrece.

El Menú administrador

El menú de administrador de Wordpress está compuesto de una serie de opciones que nos permite navegar por las diferentes opciones que todo blog basado en Wordpress dispone y con las que podemos condicionar nuestro blog.

  • Tablero
  • Escribir
  • Administrar
  • Comentarios
  • BlogRoll
  • Presentación
  • Plugins
  • Usuarios
  • Opciones

Estas son las opciones que todo blogger se encuentra al entrar en su panel de administración. Cada una contiene una seríe de subcategorías que nos tienen las opciones más recogidas, evitando abrumar al usuario con todas las opciones posibles.

Añadir opciones

Sabiendo ya las opciones que tiene el menú de administración, podemos decidir donde queremos que aparezcan nuestras opciones y dependiendo de donde lo hagamos tendremos unas funciones u otras para añadir las opciones.

Por jerarquia la parte más alta del menú es la que compone la lista anterior, y la vamos a llamar Menu Principal(para ser lógicos :D ).

Añadir al Menú Principal

add_menu_page(page_title, menu_title, access_level/capability, file, [function]);

Parámetros:

page_title: el title de la página que queremos mostrar.
menu_title: título de la nueva opción que queremos incluir.
access_level/capability: Permisos para esta nueva opción (Niveles de usuarios / Capacidad)
file: fichero PHP que contiene las funciones que se ejecutarán al acceder a la nueva opción.
function: función que llamaremos al entrar al fichero.

Ejemplo:

function nueva_opcion() {
...
}

add_menu_page("Estás en la nueva opción", "Nueva Opción", 1, __FILE__, "nueva_opcion")

Añadir a los submenus

Por debajo del menú principal, tenemos una serie de submenus en cada una de las opciones, añadir opciones a estos menús es relativamente similar al método anterior.

add_submenu_page(parent, page_title, menu_title, access_level/capability, file, [function]); 
parent: El fichero padre de la opción de Wordpress en la que se ha de incluir la opción.
page_title: Título de la página que se mostrará al acceder a la opción.
menu_title: Título de la opción que veremos en el menú.
access_level/capability: Permisos para la opción.
file: Fichero que contiene las funcionalidades de la opción.
function: Función que se lanzará al acceder a la opción.

Para las opciones más comunes disponemos de unas serie de funciones que simplifican brevemente nuestra tarea.

Añadir al submenú de Opciones

add_options_page(page_title, menu_title, access_level/capability, file, [function]);

Añadir al submenú de Administrar

add_management_page(page_title, menu_title, access_level/capability, file, [function]);

Añadir al submenú de Presentación

add_theme_page( page_title, menu_title, access_level/capability, file, [function]);

Para los más vagos

Para los más vagos hay un plugin llamado Custom Admin Menú que nos permite disponer de un interface amigable para hacer estas tareas.

aNieto2k

Profiling en PHP: ¿qué partes consumen más?

Hace relativamente poco comentaba casi de pasada lo bien que iría tener una utilidad para saber qué funciones de PHP consumen más a lo cual el primer comentario comentaba la respuesta: herramientas de profiling para PHP.

Ayer le dediqué un rato al tema y si bien veo que sería más fácil algo integrado en WordPress, hay que reconocer que es más práctico hacerlo con profiling genérico ya que es independiente del script a revisar.

Existen varios programas para ello aunque yo sólo conozco dos: Xdebug y APD. Vamos a hablar del segundo.

APD o Advanced PHP Debugger se describe a si mismo como un completo profiler/debugger que se carga como una extensión de Zend. Está pensado para ser una alternativa a gprof en C y DPROF para Perl.

¿Cómo instalarlo?

Hay varias maneras, si usas PHP4 y Debian sólo haría falta un apt-get install php4-apd pero a mí me da dependencias rotas y además en localhost uso PHP5. Vamos a instalarlo de forma manual “relativamente”…

Lo primero es que necesita PHP como CGI, aunque eso no impide usar de normal el mod_php e instalar el CGI, también hace falta el phpize, yo tengo instalado un LAMP funcional con PHP5 y he tenido que agregar estos paquetes: php5-cgi y php-dev.

Luego he intentado instalar la extensión con pear:

pear install apd

Pero me ha soltado un error con solución incluida, hay que usar:

pecl install apd

Si todo va bien bajará la extensión y la compilará, en mi caso la ruta donde guarda la extensión es /usr/lib/php5/20060613+lfs/apd.so pero si no sabéis donde lo guarda podéis buscarlo mediante:

updatedb && locate apd.so

Ahora toca configurar el PHP5 para que cargue el módulo, creo un fichero llamado apd.ini en /etc/php5/conf.d/apd.ini con la siguiente configuración:

# configuration for php APD module
zend_extension = /usr/lib/php5/20060613+lfs/apd.so
apd.dumpdir = /var/www/apd
apd.statement_trace = 0

La primera línea es la ruta a la extensión, la segunda donde se guardarán los “logs” y la tercera, sinceramente no estoy seguro, venía con un fichero de configuración de ejemplo.

Reiniciamos el servidor y creamos un fichero PHP con la función phpinfo() y podremos ver todo lo que tiene PHP, deberíamos ver algo parecido a:

Additional .ini files parsed /etc/php5/apache2/conf.d/apd.ini,

This program makes use of the Zend Scripting Language Engine: Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies with Advanced PHP Debugger (APD) v0.9, , by George Schlossnagle.

Y un campo para la extensión que pone la versión usada y que está activada. Con esto ya está.

Generando la información

Es muy fácil, nos aseguramos que la ruta de los logs (/var/www/apd) tiene permisos para Apache escriba en ella y luego solo tenemos que añadir una línea a nuestro script para que empiece a analizar:

<?php apd_set_pprof_trace() ?>

Hay que añadirla al principio del script, por ejemplo esto en WordPress sería en el fichero wp-blog-header.php sin dejar espacios (aunque sí que vale un salto de línea) entre ése código y el <?php que inicia el código de WordPress. Esto es importante porque de lo contrario dará errores de cabeceras enviadas erróneamente (exactamente igual que con los plugins).

Traduciendo a idioma humano

Ahora, cada petición que hagamos genera un reporte un blog de WordPress recién creado sin nada más que lo básico genera un reporte de 300KB, por lo que hay que tener cuidado de no saturar la máquina: abriremos sólo las páginas que queremos ver su rendimiento (por ejemplo la portada).

Luego, supongamos que el primer reporte que hacemos es el de la portada y se llama pprof.10422.1 pues para traducirlo a algo entendible por nosotros usaremos pprofp.

pprofp -u pprof.10422.1

Con esto ya tenemos el reporte hecho.

¿Un ejemplo de reporte?

WordPress recién instalado, la portada saca esto:

Trace for /var/www/wordpress/wp-blog-header.php
Total Elapsed Time = 0.27
Total System Time  = 0.02
Total User Time    = 0.24

         Real         User        System             secs/    cumm
%Time (excl/cumm)  (excl/cumm)  (excl/cumm) Calls    call    s/call  Memory Usage Name
--------------------------------------------------------------------------------------
8.5 0.01 0.01  0.02 0.02  0.00 0.00   115  0.0002   0.0002            0 function_exists
6.8 0.01 0.01  0.02 0.02  0.00 0.00  1110  0.0000   0.0000            0 strlen
6.8 0.02 0.02  0.02 0.02  0.00 0.00   210  0.0001   0.0001            0 serialize
5.1 0.01 0.06  0.01 0.06  0.00 0.00   377  0.0000   0.0001            0 apply_filters
5.1 0.00 0.00  0.01 0.01  0.00 0.00   163  0.0001   0.0001            0 preg_match
3.4 0.01 0.01  0.01 0.01  0.00 0.00   194  0.0000   0.0000            0 WP_Object_Cache->get
3.4 0.01 0.01  0.01 0.01  0.00 0.00     4  0.0020   0.0020            0 dirname
1.7 0.00 0.00  0.00 0.00  0.00 0.00     2  0.0020   0.0020            0 include_once
1.7 0.00 0.00  0.00 0.00  0.00 0.00   171  0.0000   0.0000            0 trim
1.7 0.00 0.00  0.00 0.00  0.00 0.00    15  0.0003   0.0003            0 date
1.7 0.00 0.00  0.00 0.00  0.00 0.00   137  0.0000   0.0000            0 mysql_fetch_field
1.7 0.00 0.00  0.00 0.00  0.00 0.00   333  0.0000   0.0000            0 chr
1.7 0.00 0.00  0.00 0.00  0.00 0.00    19  0.0002   0.0002            0 preg_split
1.7 0.00 0.00  0.00 0.00  0.00 0.00    11  0.0004   0.0004            0 is_callable
1.7 0.00 0.12  0.00 0.10  0.00 0.01   148  0.0000   0.0007            0 call_user_func_array
1.7 0.00 0.00  0.00 0.00  0.00 0.00     3  0.0013   0.0013            0 mktime
1.7 0.00 0.00  0.00 0.00  0.00 0.00   163  0.0000   0.0000            0 mysql_num_fields
1.7 0.00 0.00  0.00 0.00  0.00 0.00   167  0.0000   0.0000            0 array_slice
1.7 0.00 0.00  0.00 0.00  0.00 0.00    60  0.0001   0.0001            0 strpos
1.7 0.00 0.00  0.00 0.00  0.00 0.00     1  0.0040   0.0040            0 ini_get

Lo cual coincide con lo que saca en forma de comentario en el HTML:

<!-- 28 queries. 0.269 seconds. -->

¿Algo más?

¡Sí! Al ejecutar pprofp me ha dado un error ya que ha intentado encontrar php en /usr/local/bin, lo he arreglado con un enlace simbólico:

ln -s /usr/bin/php5 /usr/local/bin/php

También, como ya me pasó anteriormente, el mencionar phpinfo() y apd_set_pprof_trace() con el “;” final hace que salte mod_security y me impide publicar esto, así que si bien normalmente las funciones funcionan igual terminadas en () que en () + ; si os da problemas usad la segunda forma…

Repito… ¿ALGO MÁS?

No… }:P

, , ,

Comentar
Añadir a del.icio.us

BlogDay 07

Hoy es el BlogDay, un día destinado a  promover la filosofía blog y dar a conocer a los usuarios otros blogs. Como no quiero elegir a nadie en concreto he pensado que mejor me guio por la BlogoEdad y recomiendo a los usuarios que cumplen años hoy.

Muchas felicidades!!!

aNieto2k

Blogging al día: aniversario de Blogguer, 100 millones y WP

Nacidos para bloguear:

WordPress plugin “Redirection”

Filex me comenta por email sobre Redirection un plugin para WordPress (2.1 o superior) con muy buena pinta.

Redirection se encarga de administrar redirecciones HTTP 301 (Movido permanentemente) y mantener un registro de los errores 404. Cómo bien dicen es especialmente útil cuando se migran páginas de un sitio viejo o cualquier otro cambio similar.

Recientemente se ha actualizado con bastantes novedades y sus características más interesantes son:

  • Monitorización de errores 404: genera un log con las páginas que no existen (404) y permite redireccionar a los visitantes.
  • Redireccionador: permite redireccionar una URL a otra página, fichero o sitio.
  • Registros completos para todas las redirecciones.
  • Todas las URLs pueden redireccionarse, no hay límite, incluso las que ya existen.
  • Distintos métodos de redireccionar: basado en estado del login, redireccionar de forma aleatoria, basado en el referer
  • Añade automáticamente una redirección 301 cuando cambia la URL de una entrada (ideal para esos cambios de título con cambio de slug incluido).
  • Puedes utilizar redirecciones 301, 302 o 307.
  • Soporta expresiones regulares.
  • No requiere de .htaccess: funciona completamente dentro de WordPress (mmm… ¿eso no dará problemas con WP-Cache u sistemas de cache?).
  • Quita o añade las www. a todas las páginas.
  • Redirecciona index.php, index.html y index.htm.
  • Localizado (permite idiomas).

Además de ello permite hacer redirecciones “pass-through” (nombre que le dá el plugin) que son redirecciones normales pero conservando la URL de la redirección sin cambiar a la URL de destino. En la web tenéis un vídeo del plugin en plena acción.

Si eres de los que vigila los “Nombre para URI” que se generan quizá no te haga falta, pero para aquellos que se dejan los ¿ u ¡ (generando una URL fea) y para otros propósitos de redireccionar, está muy bien.

,

Comentar
Añadir a del.icio.us

Hoy empieza el primer bug hunt de Wordpress 2.3

Hoy comienza la primera “cacería de errores” de Wordpress 2.3. La idea es, que todos instalen Wordpress 2.3 Beta 1 (en su localhost o donde quieran) y empiezen a probarlo, y si llegan a encontrar algún error, reportarlo en el chat irc #wordpress-bugs.

¿A qué hora empieza?

Puedes revisar aquí, y buscar tu ciudad ) Así sabrás a que hora conectarte al bug hunt. Por ejemplo, es a la 1pm en Caracas.

Gracias Ryan!


Posts relacionados de Alex Seo:

Presunto crackeo de wordpress.org

Un blog alojado en el sitio de videotutoriales MacHouse publicaba ayer un vídeo en el que se daba cuenta de un presunto crackeo de la página oficial de WordPress. El ataque estaría protagonizado, siempre según el autor del blog, por un grupo de spammers que cambió el texto de la sección ‘Develover Docs‘ por publicidad de un programa denominado Video2DVD. A la hora de escribir este post, la página no aparece crackeada, así que no puedo confirmar la certeza de la noticia.
(more…)

WordStress, grupo sobre WordPress en Facebook

WordStress

Me ha dado por crear un grupo sobre WordPress en Facebook, visto lo poblado y animado que está todo por allí. El objetivo:

“Compartir información, experiencias, proyectos… Y, sobre todo, divertirnos y ayudarnos mutuamente para combatir el stress de la constante actualización”.

Lo he llamado cariñosamente WordStress y en él puede participar quien lo desee y, cuantos más seamos, mejor. Si no estás registrado, sólo debes darte de alta y acudir al enlace permanente. Estoy seguro de que darte una vuelta por Facebook, te apuntes a WordStress o no, te resultará una experiencia enriquecedora.

La foto es de Nicole Lee, bajo licencia Creative Commons (Attribution-Noncommercial-Share Alike 2.0 Generic).

Estadísticas de Navegadores que se usan para visitar Wordpress.com

Matt Mullenweg ha puesto en su blog las estadísticas de los navegadores y sistemas operativos que se usan para visitar Wordpress.com ¿Qué tiene de impresionante? Pues seguimos viendo que el mando lo tiene Windows e Internet Explorer, pero me sorprendió que ya Firefox tenga un 30%, aunque por supuesto son estadísticas de visitas a un sitio web (que se encuentra en el puesto 72 de Alexa y tiene un pagerank 8)

Wordpress

Estadísticas de Navegadores

  1. 62.46% – Internet Explorer
  2. 30.74% – Firefox
  3. 3.83% – Safari
  4. 1.78% – Opera
  5. 0.52% – Mozilla

Estadísticas de Sistemas Operativos

  1. 90.36% – Windows
  2. 6.73% – Macintosh
  3. 2.19% – Linux
  4. 0.03% – PlayStation Portable


Posts relacionados de Alex Seo:

  • <a href="http://alexseo.com/google-analytics-estadisticas-de-tu-sitio-web/" rel="bookmark" title="Google Analytics, estad

Wordpress 2.3 Beta 1

Pues ya ha aparecido la primera beta de Wordpress 2.3, la última versión de Wordpress. La versión final va a estar para el 24 de Septiembre (el mismo día que empieza la segunda temporada de Heroes).

¿Qué os puedo decir acerca de esta nueva versión de Wordpress? Pues las novedades son principalmente la inclusión de tags (lo que dejaría por fuera a varios plugins), también que hay muchos arreglos de varios errores de Wordpress, principalmente de seguridad.

Voy a instalar Wordpress 2.3 aquí en AlexSEO para ir probando que tal es.

Fuente: Wordpress


Posts relacionados de Alex Seo:

Get Adobe Flash playerPlugin by wpburn.com wordpress themes