Mostrar información sobre tu red multisitio

WordPress multisitio ofrece varias opciones globales en la tabla de la base de datos llamada wp_sitemeta, como por ejemplo el nombre de la red (site_name), el email del administrador (admin_email) o la URL del sitio principal (siteurl).

Para acceder a estas opciones, y usarlas en tu multisitio podemos utilizar la función get_site_option(), que vas a ver que es muy práctica.

De este modo, por ejemplo, si quieres mostrar la cantidad de sitios de la red, los usuarios y el nombre de la red, lo haríamos así:

<?php if( is_multisite() ): ?>

   La red <?php echo esc_html( get_site_option( 'site_name' ) ); ?> está compuesta de <?php echo get_blog_count(); ?> sitios web y se han dado de alta <?php echo get_user_count(); ?> usuarios.

<?php endif; ?>

Que nos mostraría algo como “La red Ayuda WordPress está compuesta de 94 sitios web y se han dado de alta 3590 usuarios“. Tu eliges donde y como (con un poco de CSS mejor) mostrar esa u otra información.

Si quieres practicar y encontrar más funciones interesantes las encontrarás en el fichero ms-functions.php.

Entradas recientes de toda la red en WordPress multisitio

Si has creado una red con WordPress y los sitios de la misma comparten temática, o simplemente quieres dar reflejo de la actividad de la red en todos los sitios, puedes crear una lista de las entradas más recientes de todos los sitios de la red.

Eso si, no hay una función interna en WordPress para hacerlo pero puedes ayudarte de la clase $wpdb database. Con ella puedes crear una petición a la base de datos de las últimas entradas de toda tu red.

Pero hay un pero, y es que esta petición SQL es bastante grande, para controlar este comportamiento usaremos la API Transients, de manera parecida a como se usa en la función wp_list_sites().

Lo primero que tenemos que hacer es añadir la función wp_recent_across_network() al archivo functions.php de tu tema activo. Lo haremos así:

/**
 * Lista de entradas recientes en toda la red Multisitio
 *
 * @uses get_blog_list(), get_blog_permalink()
 *
 * @param int $size El número de resultados a obtener
 * @param int $expires Segundos hasta que expire la cache transient
 * @return object Contiene el blog_id, post_id, post_date y post_title
 */
function wp_recent_across_network( $size = 10, $expires = 7200 ) {
   if( !is_multisite() ) return false;

   // Se cachean los resultados con la API Transients de WordPress
   // Obtenemos una copia existente de nuestros datos transient
   if ( ( $recent_across_network = get_site_transient( 'recent_across_network' ) ) === false ) {

      // Si no hay transient regeneramos los datos y guardamos una nueva transient
      // Preparamos la query SQL con $wpdb
      global $wpdb;

      $base_prefix = $wpdb->get_blog_prefix(0);
      $base_prefix = str_replace( '1_', '' , $base_prefix );

      // A causa de que la función get_blog_list() está actualmente abandonada
      // debido al alto consumo de recursos usaremos
      // $wpdb para ejecutar nuestra query SQL. Como la query puede
      // consumir mucha memoria almacenaremos los resultados usando la API Transients
      if ( false === ( $site_list = get_site_transient( 'multisite_site_list' ) ) ) {
         global $wpdb;
         $site_list = $wpdb->get_results( $wpdb->prepare('SELECT * FROM wp_blogs ORDER BY blog_id') );
         set_site_transient( 'multisite_site_list', $site_list, $expires );
      }
      $limit = absint($size);
      // Unificamos los resultados de wp_posts en todos los sitios del Multisitio en un solo resultado con MySQL "UNION"
      foreach ( $site_list as $site ) {
         if( $site == $site_list[0] ) {
            $posts_table = $base_prefix . "posts";
         } else {
            $posts_table = $base_prefix . $site->blog_id . "_posts";
         }

         $posts_table = esc_sql( $posts_table );
         $blogs_table = esc_sql( $base_prefix . 'blogs' );

         $query .= "(SELECT $posts_table.ID, $posts_table.post_title, $posts_table.post_date, $blogs_table.blog_id FROM $posts_table, $blogs_table\n";
         $query .= "\tWHERE $posts_table.post_type = 'post'\n";
         $query .= "\tAND $posts_table.post_status = 'publish'\n";
         $query .= "\tAND $blogs_table.blog_id = {$site->blog_id})\n";

         if( $site !== end($site_list) )
            $query .= "UNION\n";
         else
            $query .= "ORDER BY post_date DESC LIMIT 0, $limit";
      }

      // Un poco de limpieza y ejecutamos la query
      $query = $wpdb->prepare($query);
      $recent_across_network = $wpdb->get_results( $query );

      // Ajustamos la cache Transients para que espire cada dos horas
      set_site_transient( 'recent_across_network', $recent_across_network, 60*60*2 );
   }
   // Damos formato a la salida HTML
   $html = '
    '; foreach ( $recent_across_network as $post ) { $html .= '
    ' . $post->post_title . '
    '; } $html .= '
';
   return $html;
}

El uso de esta función en tu tema es bien sencillo. Eso si, asegúrate de comprobar el valor return en la salida HTML para evitar conflictos con instalaciones que no sean multisitio.

Ya solo nos queda añadir el código que recupere los datos de la función en nuestro tema, algo así:

<?php
// Mostramos las entradas recientes de toda la red
$recent_network_posts = wp_recent_across_network();
if( $recent_network_posts ):
?>
<?php echo $recent_network_posts; ?>
<?php endif; ?>

Fuente: Smashing magazine

WordPress 3.0 final disponible – Todo lo que debes saber

¡Ya está listo WordPress 3.0 mediante descarga directa! en el sitio oficial. No sé cuando tardará en estar en nuestros escritorios pero supongo que poco. Si no quieres esperar lo puedes descargar aquí en inglés o, por supuesto, descargarla en español desde el sitio oficial WordPress España.

Aprovecho para recordarte algunos recursos sobre WordPress 3.0 que debes tener en cuenta:

Anuncio oficial: WordPress 3.0 Final en español

¿Te gustó este post? ¡Compártelo! Bitacoras.com TwitThis Facebook Meneame Google Bookmarks del.icio.us Live Technorati Ping.fm Wikio Turn this article into a PDF! E-mail this story to a friend! Print this article!

Actualizar de WordPress Mu a WordPress 3.0

Se avecina el advenimiento de WordPress 3.0 y una de las preguntas del millón es ¿como actualizo de WordPress MU a WordPress 3.0?.

Y es que hay muchas guías de como pasar de WordPress "normal" a MU pero ¿al revés?. Casi nunca se había planteado esta cuestión, pero claro, ahora es distinto, ahora todo se integra en un solo WordPress.

Afortunadamente Developers Mind ha creado una guía muy clarita y sencilla de como pasar de WordPress MU (v 2.9.2) a WordPress 3.0 (beta 2), que comparto, para los que no os apañéis con el inglés …

1. Remplaza los ficheros de WordPress:
Descarga y descomprime la última versión de WordPress 3.0 (beta 2). Borra las carpetas wp-admin y wp-includes. Sube los archivos descomprimidos al servidor, sobreescribe los archivos antiguos. Asegúrate de que sobreescribes todos los archivos, y presta atención especial a la carpeta wp-content. Debes sobreescribir los archivos de esta carpeta y no remplazar la carpeta con la nueva, ya que la nueva contiene los temas y los plugins (como verás, esto es muuuy distinto a lo que solemos recomendar en Ayuda WordPress para una actualización "normal" de WordPress, no es un error de transcripción).

2. Actualiza WordPress:
Accede al escritorio de WordPRess y sigue el enlace que te pide que actualices la red (update network) para, de este modo, actualizar todos los sitios (blogs) de tu red.

3. Actualiza wp-config:
WordPress encripta las cookies pero debes añadir el código NONCE_SALT mostrado en la parte superior del escritorio al fichero wp-config.php. Por ejemplo: define( 'NONCE_SALT', 'a<.4I)#p^-iy?sbb3JPu+W~-Zk|aPLMN[TvoiHIKGI_bbB-h?iliBb2ra' ). Este código será único para tu instalación. Añádelo encima de la línea que dice: /* That's all, stop editing! Happy blogging. */

HTML:
  1. define( "WP_USE_MULTIPLE_DB", false );
  2. define( 'NONCE_SALT', 'a<U3S[ g<.4I)#p^-iy?sbb3JPu+W~-Zk|aPLMN[TvoiHIKGI_bbB-h?iliBb2ra' );
  3. /* That's all, stop editing! Happy blogging. */
  4. /** Absolute path to the WordPress directory. */
  5. if ( !defined('ABSPATH') )
  6.     define('ABSPATH', dirname(__FILE__) . '/');
  7. /** Sets up WordPress vars and included files. */
  8. require_once(ABSPATH . 'wp-settings.php');

4. Actualiza las reglas de Rewrite:
El fichero wp-content/blogs.php se ha dejado de usar en WordPress 3.0 y debes actualizar las reglas de rewrite para que usen el archivo wp-includes/ms-files.php. Borra la referencia al archivo wp-content/blogs.php y cámbialo a wp-includes/ms-files.php en el archivo .htaccess:

HTML:
  1. RewriteEngine On
  2. RewriteBase /
  3.  
  4. #archivos subidos
  5. RewriteRule ^(.*/)?files/$ index.php [L]
  6. RewriteCond %{REQUEST_URI} !.*wp-content/plugins.*
  7. RewriteRule ^(.*/)?files/(.*) wp-includes/ms-files.php?file=$2 [L]
  8.  
  9. # agrega una barra a /wp-admin
  10. RewriteCond %{REQUEST_URI} ^.*/wp-admin$
  11. RewriteRule ^(.+)$ $1/ [R=301,L]
  12.  
  13. RewriteCond %{REQUEST_FILENAME} -f [OR]
  14. RewriteCond %{REQUEST_FILENAME} -d
  15. RewriteRule . - [L]
  16. RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-.*) $2 [L]
  17. RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
  18. RewriteRule . index.php [L]
  19.  
  20. <IfModule mod_security.c>
  21. <Files async-upload.php>
  22. SecFilterEngine Off
  23. SecFilterScanPOST Off
  24. </Files>
  25. </IfModule>

Borra también el archivo blogs.php una vez hechos los cambios en el .htaccess

También se ha dejado de usar wpmu-settings.php en WordPress 3.0, y puede borrarse igualmente.

Ah bueno, y como siempre, deberías hacer copia de seguridad de tu base de datos antes de actualizar WordPress, que no se te olvide.

¿Te gustó este post? ¡Compártelo! Bitacoras.com TwitThis Facebook Meneame Google Bookmarks del.icio.us Live Technorati Ping.fm Wikio Turn this article into a PDF! E-mail this story to a friend! Print this article!

Lo que no irá en WordPress 3.0

Hay dos funcionalidades que se han "caído" de la versión 3.0 de WordPress. Y es que son muchos cambios, algunos realmente importantes, y hay un par de mejoras que se ha preferido dejar para más adelante y, de este modo, concentrar los esfuerzos de desarrollo en la integración de WordPress y WordPress MU, por ejemplo.

Lo que no vamos a tener en WordPress 3.0 es lo siguiente:

  1. Mejoras en el cargador de archivos, algo mucho tiempo demandado.
  2. Reconstrucción del sistema de perfiles de usuarios, una rémora del pasado que todos esperamos cambie lo antes posible.

Seguro que para más de uno esto será importante pero tened en cuenta que WordPress 3.0 es un paso adelante importantísimo en el desarrollo de este CMS (si Matt, he dicho CMS), y es mucho más vital una migración de MU a la plataforma integrada que esos cambios, por mucho que nos gustaría tenerlos ya.

Contenido exclusivo para suscriptores al Feed

¡Gracias por seguirnos a diario!. Premiamos tu fidelidad ofreciéndote habitualmente contenidos exclusivos. Hoy puedes descargar:

Clic aquí para iniciar la descarga Guía Windows Live Writer

¿Te gustó este post? ¡Compártelo! Bitacoras.com TwitThis Facebook Meneame Google Bookmarks del.icio.us Live Technorati Ping.fm Wikio Turn this article into a PDF! E-mail this story to a friend! Print this article!

Desactivar el editor de plugins y temas en WordPress 3.0

Una de las novedades más importantes que nos va a traer WordPress 3.0 es la integración con WordPress MU, con lo que ello conlleva de la posibilidad de ofrecer la creación de sitios gratuitos bajo tu dominio. Ahora bien, esto también conlleva ciertas implicaciones de seguridad ¿o qué habías pensado, que todo iban a ser alegrías?.

Veremos más pero una muy obvia es que alguien "dentro del sistema" podría llegar a acceder como Super Admin y entonces tener acceso al editor de plugins y/o temas e inyectar código o cosas similares.

La solución es bien sencilla gracias a un plugin creado por Ron de WPMU tutorials que, una vez activado, desactiva los editores y peligro solucionado.

¿Convencido?, descárgalo de aquí.

¿Te gustó este post? ¡Compártelo! Bitacoras.com TwitThis Facebook Meneame Google Bookmarks del.icio.us Live Technorati Ping.fm Wikio Turn this article into a PDF! E-mail this story to a friend! Print this article!

WordPress 3.0 aplazado a Mayo

Parece ser que para asegurar todos los cambios que conlleva esta nueva versión, WordPress 3.0, que en principio estaba programado que estuviera disponible en Abril, se ha aplazado el lanzamiento a Mayo. No obstante aún quedan un 45% de tickets abiertos, y casi me alegro del retraso, para así asegurar cambios tan vitales como la fusión con WordPress MU.

¿Te gustó este post? ¡Compártelo! Bitacoras.com TwitThis Facebook Meneame Google Bookmarks del.icio.us Live Technorati Ping.fm Wikio Turn this article into a PDF! E-mail this story to a friend! Print this article!

Todas las Novedades de WordPress 3.0

Ya queda menos para que salga a la luz Wordpress 3.0, un hito en las versiones de este CMS, y por ello nada mejor que ir recopilando las novedades que nos vamos a encontrar en esta versión que, si el desarrollo sigue su curso, tendremos disponible el mes de Abril Mayo.

1. Adios al usuario "admin"

Por fin tendremos desde el comienzo la posibilidad (sencilla) de cambiar el nombre del usuario administrador inicial, un fallo de seguridad que por fin encuentra solución nada más instalar WordPress.

2. Plantillas de entradas y de autor

Ahora podremos definir plantillas de entrada para cada autor específico o para lo que queramos, al igual que actualmente hacemos con, por ejemplo, las categorías.

Para crear plantillas personalizadas de entrada solo tenemos que añadir un código como el de este ejemplo al fichero functions.php de nuestro tema activo:

PHP:
  1. function post_type_noticias() {
  2. register_post_type( 'noticias',
  3. array( 'label' => __('¡Noticias!'), 'public' => true, 'show_ui' => true ) );
  4. register_taxonomy_for_object_type('post_tag', 'noticias');
  5. }
  6. add_action('init', 'post_type_noticias');

Por supuesto, cambias "noticias" por lo que tu quieras, y puedes aplicar un buen montón de parámetros para personalizar el nuevo menú que tendrás disponible.

Si lo que quieres es definir una plantilla para un autor específico lo harías así.

3. Creación de múltiples blogs - El fin de WordPress MU

Una de las grandes novedades es que WordPress 3.0 supone el fin de WordPress MU, su integración en un único sistema: WordPress. Esto significa que podremos ofrecer la creación de blogs en nuestro dominio a nuestros lectores si así lo deseamos.

4. BuddyPress como un plugin más

Desde ya mismo podemos usar BuddyPress sin tener que instalar WordPress MU. Podemos ofrecer un entorno de comunidad en nuestra instalación normal de WordPress.

5. Nuevo diseño del escritorio

En la nueva versión el escritorio va a sufrir importantes cambios de aspecto, como unos nuevos colores, distribución del panel "De un vistazo" que ahora separa contenido de conversación, o pestañas en las ventanas de múltiple funcionalidad (p.ej: Gestionar Temas / Instalar Temas). También se han unificado las opciones Miscelaneas y Multimedia, algo bastante razonable.

6. WordPress 2010

El nuevo tema por defecto de WordPress es el llamado 2010 o twentyten. Más ancho, claro y bonito que el viejo K2. Además de cabecera personalizada dispone de 6 áreas de widgets, dos en la barra lateral y 4 en el pié de página.

7. Fondo personalizado

Ahora hay una nueva opción en la apariencia: cambiar el patrón de fondo de tu sitio, el que aparecerá tras el tema activo. Simplemente eliges una imagen de fondo (o patrón que se repetirá) y lo activas.
Previamente hay que añadir este código al tema activo, en el fichero functions.php

PHP:
  1. add_custom_background();


8. Menús personalizados

¿Quieres añadir un nuevo menú a tu tema activo?, pues solo tienes que hacer un par de cambios y luego acceder al nuevo panel de apariencia y gestionar tus menús personalizados como si fueran widgets.

Primero hay que añadir esto al fichero functions.php de tu tema activo:

PHP:
  1. add_theme_support( 'nav-menus' );

A continuación añades este otro código en el fichero header.php del tema activo, allí donde quieres que aparezca (o aparezcan):

PHP:
  1. <?php wp_nav_menu(); ?>

9. Plugins canónicos

Aparte de la discusión sobre el nombre, será una garantía disponer de plugins oficiales e imprescindibles, con un amplio soporte por parte de la comunidad y garantía de continuidad.


Como ves son unas cuantas novedades, algunas muy importantes. ¿Sabes de alguna más que se me haya pasado?, si quieres puedes probarlo en WordPress Beta Testing.

¿Te gustó este post? ¡Compártelo! Bitacoras.com TwitThis Facebook Meneame Google Bookmarks del.icio.us Live Technorati Ping.fm Wikio Turn this article into a PDF! E-mail this story to a friend! Print this article!

WordPress MU 2.9.2 – El fin de WordPress MU

Donncha anunció la disponibilidad la versión 2.9.2 de WordPress MU, con solución a todos los fallos encontrados desde la última actualización. Esta versión, salvo necesidad, será la última versión de WordPress MU, ahora que WordPress 3.0 integrará ambas plataformas, ofreciendo la posibilidad de montar sistemas multiusuario a voluntad.

Contenido exclusivo para suscriptores al Feed

¡Gracias por seguirnos a diario!. Premiamos tu fidelidad ofreciéndote habitualmente contenidos exclusivos. Hoy puedes descargar:

Clic aquí para iniciar la descarga Guía Windows Live Writer

¿Te gustó este post? ¡Compártelo! Bitacoras.com TwitThis Facebook Meneame Google Bookmarks del.icio.us Live Technorati Ping.fm Wikio Turn this article into a PDF! E-mail this story to a friend! Print this article!

BuddyPress 1.2 final (también para WordPress no-MU)

Ayer mismo salió a la luz la versión 1.2 final de BuddyPress, cuya principal - y más esperada - novedad es que ahora se puede instalar igualmente como plugin en un WordPress "normal", que no sea multiusuario.

Instalarlo es bien sencillo, solo tienes que descargarlo o instalarlo, y activarlo, como cualquier otro plugin. Luego, para disfrutarlo en toda su extensión, deberás instalar y activar un tema que sea compatible con BuddyPress. En el paquete del plugin vienen 2 incluidos, pero hay algunos más, échales un vistazo antes de hacer el cambio, tus lectores te lo agradecerán.

Ahora bien, si ya usabas una versión anterior de BuddyPress en un WordPress MU es mejor que revises estas indicaciones.

Contenido exclusivo para suscriptores al Feed

¡Gracias por seguirnos a diario!. Premiamos tu fidelidad ofreciéndote habitualmente contenidos exclusivos. Hoy puedes descargar:

Clic aquí para iniciar la descarga Guía Windows Live Writer

¿Te gustó este post? ¡Compártelo! Bitacoras.com TwitThis Facebook Meneame Google Bookmarks del.icio.us Live Technorati Ping.fm Wikio Turn this article into a PDF! E-mail this story to a friend! Print this article!