Contenido

WordPress 2.6 y los desarrolladores de plugins

3 jul

+ 14

Ozh, escribe un artículo en el que nos muestra los cambios más significativos de la nueva versión de WordPress, la 2.6, en relación a los desarrolladores de plugins.

Puesto que han cambiado muchas de las opciones del núcleo de WordPress, nos veremos obligados a realizar modificaciones de la mayoría de plugins.

1. El directorio wp-content

Vimos que WordPress daba la posibilidad de sacar la carpeta wp-content/ de la carpeta web y esto ha ocasionado una gran cantidad de cambios entre ellos el nacimiento de dos nuevas constantes que se encargan de conocer la nueva ruta.

Actualmente usamos la constante ABSPATH para hacer referencia a la ruta de la raiz de nuestro WordPress.

$plugin_path = ABSPATH . '/wp-content/plugins/' . plugin_basename(dirname(__FILE__));
$plugin_url = get_option('siteurl') . '/wp-content/plugins/' . plugin_basename(dirname(__FILE__));

Esta constante seguirá disponible, pero ya no tiene por que estar el directorio wp-content/ colgando de la raíz de WordPress. Por ese motivo tendremos que reemplazarlo para tener un código más permisivo:

// Pre-2.6 compatibility
if ( !defined('WP_CONTENT_URL') )
	define( 'WP_CONTENT_URL', get_option('siteurl') . '/wp-content');
if ( !defined('WP_CONTENT_DIR') )
	define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' );
// Cogemos la ruta
$plugin_path = WP_CONTENT_DIR.'/plugins/'.plugin_basename(dirname(__FILE__));
$plugin_url = WP_CONTENT_URL.'/plugins/'.plugin_basename(dirname(__FILE__));

Nacen WP_CONTENT_DIR y WP_CONTENT_URL, dos constantes que tendremos que tener muy presentes.

2. Incluyendo el fichero wp-config.php

El fichero wp-config.php tambien permite ser sacado de nuestra carpeta web, lo que significa que tenemos el mismo problema anterior, no debemos creer que todos los usuarios lo tendrán instalado en la raíz de su WordPress.

Antiguamente, al estar wp-content/ en la raiz podíamos usar../../../ para llegar al directorio raíz y usar wp-config.php en nuestros plugins.

require_once('../../../wp-config.php');

Esto en WordPress 2.6, tambien ha cambiado:

$root = dirname(dirname(dirname(dirname(__FILE__))));
if (file_exists($root.'/wp-load.php')) {
	// WP 2.6
	require_once($root.'/wp-load.php');
} else {
	// Antes de 2.6
	require_once($root.'/wp-config.php');
}

Poco a poco van cerrandose los tickets del Roadmap y va quajando más lo que tendremos los usuarios y desarrolladores de WordPress 2.6, así que mientras tanto, tendremos que estar atentos a todos estos cambios.

  • Tanto ABSPATH, WP_CONTENT_DIR y WP_CONTENT_URL son constantes, no variables Globales.
    Un saludo

  • @neo2001: Ostras, que fallo :P

    Solucionado, gracias por avisar

  • a mi se me jodió el panel de control de 2.5.1 :S http://img139.imageshack.us/img139/4616/wtfpj6.png
    de qué puede ser?? graciass

  • ¿Pero qué ventajas puede aportar el tener el directorio wp-content en otra ubicación que no sea la de toda la vida?

  • upsss, soy el del comentario de antes, ya está, ya solucioné el panel xD era un problema con un plugin

  • @Kei: Comodidad. Transportabilidad. Y una pizca de libertad.

  • AÚN NO ENTIENDO LO DE el directorio wp-content/

    alguien me puede explicar detalladamente cada paso???

  • A mi me vienen de maravilla estos cambios, tengo un portal el cual usa como blog wordpress, el wp-content lo puedo tener en otra carpeta donde se comparta con otras secciones del portal. Y el config lo puedo meter en el raiz del portal para cambiar solo un archivo de configuración.

  • Pues a mí sigue sin gustarme que el core esté en la raíz web, después de todo y a excepción de los plugins, wp-content prácticamente sería el modelo Vista en MVC y, de hecho, podría incluso contener sólo contenido estático y las vistas (yo lo tengo así en un CMS propio sobre WordPress).

    Por eso me extrañó que hicieran esto y no lo contrario: sacar la aplicación de la raíz y dejar wp-content como el directorio público.

    …en fin. Un saludo.

  • Copié el wp-content para otra ubicación, cambié el wp-content dir y me lo reconoció, pero cuando lo borré del directorio de mi wordpress, ya no me reconoció el tema que tenía configurado, me salió todo sin formato.

    Entré al panel de control a la edición de temas y no encontraba ninguno (los había borrado no?), pero si se le esta indicando la ubicación que el wp-content por qué no va a leer los temas disponibles?

    Se que esta leyendo desde la nueva ubicación del wp-content porque cuando copié nuevamente la carpeta al directorio de mi wordpress me volvió a reconocer los temas, pero al hacer ediciones al tema configurado no me los reconocia, copié el index.php a la carpeta del mismo tema en la ubicación secundaria (la indicada en el wp-config.php) y entonces me reconoce las ediciones que hago al tema.

    En general, siento que todo esto hace una mezcla, reconoce los temas en el panel de control si estan en su ubicación original (dentro del wordpress), pero a la vez, busca el contenido del tema en la ubicación secundaria configurada en el wp-config.php. No entiendo esta parte…

    Y me pregunto, desde donde esta leyendo los posts? donde se guardan?

    Me interesa mucho esto de la protección de mi wordpress porque he sido objeto de hackeos, espero que por favor alguien amplíe esto.

    Saludos

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.