Programar para WordPress multisite

Home » Blog » Programar para WordPress multisite

Como hemos comentado en otras entradas Wordpress nos permite crear una red de sitios, cada sitio con su tema… y pudiendo compartir contenido entre ellas o incluso usuarios. Ahora vamos a repasar las variaciones que deberíamos de incluir en nuestros plugins o fichero functions.php para que nuestros desarrollos funcionen correctamente en este nuevo entorno.

Funciones multisite

Al crear el multisite pasamos de tener un sitio, a tener varios. Es por este motivo que debemos tener en cuenta sus ID_BLOG. En multisite 1 blog es lo mismo que 1 sitio por eso la clave es id_blog. Y en cuanto a la base de datos, se crean tablas para cada sitio, que incluyen el id_blog como por ejemplo tendremos wp_2_posts para nuestro id_blog=2 (Siempre que el prefijo sea wp_, que no debería ;-)).

global $blog_id;
echo $blog_id;

En primer lugar cargamos la variable global, y luego mostramos por pantalla el id del sitio que estamos viendo, este código podemos meterlo en un tema por ejemplo para cargar unos css diferentes en función del sitio.

if (is_multisite()){
echo "Sí";
}else{
echo "no";
}

En este caso comprobamos si el sitio tiene instalado multisite.

print_r(get_blog_details(3));

En este caso vemos la información de configuración del sitio = 3 la información que devuelve es: nombre del blog, dominio, descripción, fecha de creación, tipo de sitio, etc.

switch_to_blog(3);
//trabajamos con los datos del blog 3
restore_current_blog();

Estas 2 funciones lo que permiten es conectarnos con un sitio diferente del actual. Por ejemplo, queremos mostrar los 5 últimos entradas del sitio 3, pero en el tema del sitio = 1. La segunda línea es fundamental, ya que nos permite volver al blog actual, si obviamos esta etiqueta los resultados serán desastrosos. El funcionamiento es: estoy en el sitio 1, me conecto con el 3, recupero la información necesaria de ese sitio, y vuelvo a mi sitio actual.

En medio de estas funciones podemos usar cualquier función de WordPress por ejemplo podemos pintar el menú de otro sitio, un widget, un listado de usuarios, etc.

También existen funciones para crear sitios desde la programación:

<?php wpmu_create_blog( $domain, $path, $title, $user_id, $meta, $site_id ) ?>

Y por último, podemos crear menús o submenús en el administrador de red, por ejemplo para crear un plugin exclusivo multisite, o porque un plugin requiere una configuración para todos los sitios.

add_action('network_admin_menu','mi_menu');
function mi_menu(){
add_menu_page(-----);
}

En este caso basta con conectaros mediante un hook específico para multisite: network_admin_menu. La función que crea el menú: add_menu_page, es la misma que para WordPress estándar. Y para crear submenús exactamente igual solo debemos conocer cómo hacer referencia a los submenus que vienen por defecto:

  • Escritorio: index.php
  • Sitios: sites.php
  • usuarios: users.php
  • temas: themes.php
  • plugins: plugins.php
  • Ajustes: settings.php
  • update-core.php: Actualizar

Por ejemplo: creamos un submenú dentro de temas en administrador de la red:

add_action('network_admin_menu','mi_menu'); 
function mi_menu(){ 
add_submenu_page('themes.php',-----); 
}

Almacenar variables para todo el sitio

En algunos casos necesitamos tener variables de un sitio o variables comunes para todos los sitios, por un lado tenemos la generación de variables para un sitio concreto:

  • add_blog_option: Crea la variable.
  • update_blog_option: Actualiza, sino existe crea la variable.
  • get_blog_option: Carga la variable.
  • delete_blog_option: Borrar la variable.
add_blog_option(3,'Precio','17');

En este caso creamos una variable precio = 17 para el sitio = 3.

Y para crear variables para todo el sitio tenemos:

  • add_site_option: Crea la variable.
  • update_site_option: Actualiza, sino existe crea la variable.
  • get_site_option: Carga la variable.
  • delete_site_option: Borrar la variable.

Podemos encontrar más funciones en el codex.


Categorías


Foto de Iñigo Mezo Alvarez

IÑIGO MEZO ALVAREZ (IMAcreste)


Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Las reseñas son opiniones que las personas dejan en la página local de Google. Si son positivas, estas reseñas ayudarán a mejorar la confianza y credibilidad de una marca.

Participa en nuestro sorteo enviando un email con tu nombre y el asunto «Sorteo AUDITORÍA SEO». Se realizara un sorteo cada mes.

Evaluación EXCELENTE
A base de 8 reseñas
Iñigo me ha asesorado con un problema que tenía para acceder a mi web y me ha salvado la vida, porque creía que había perdido todo el trabajo que llevaba haciendo años. Muchísimas gracias. Es gratificante encontarte con alguien que controla y te ayuda en los problemas que te pueden surgir.
Santutxu Zaharra
Santutxu Zaharra
11/06/2024
Gran profesional y muy competente, le contratamos para cambiar la web y mejorar el posicionamiento y gracias a su asesoramiento ha mejorado.
jorge martinez
jorge martinez
16/05/2024
Contactamos con Iñigo para el diseño web de nuestra tienda online y estamos encantados. Su asesoramiento, seguimiento y trato han sido excepcionales. Un verdadero crack. Recomendado al 100%. No dudes en ponerte en contacto con el.
erlantz rique
erlantz rique
19/02/2024
Un acierto quien elija a Iñigo. Autentico profesional, se preocupó en todo momento que entendiera el funcionamiento de la web. Me explicó todo las veces necesarias hasta entenderlo. Se preocupó y acertó en que la web tuviera lo que le pedí y lo hizo con creces. Muy contento con el servicio prestado. Una vez realizado el trabajo, cualquier duda que tengo me sigue ayudando. Lo recomiendo sin temor a equivocarme.
Jose Marlasca
Jose Marlasca
06/02/2024
Compromiso, implicación e innovación en los proyectos. Atento a las necesidades e incansable en la búsqueda de soluciones. Muy buena opción.
Jabier Fuertes Udaondo
Jabier Fuertes Udaondo
07/01/2024
Si buscas a alguien que además de hacer un diseño web moderno, responsivo y adaptado a tu sector, te explique por qué plantea el diseño web de esa manera y que te explique y ayude en posicionar tu web lo mejor posible en base a los objetivos fijados, ese es Iñigo Mezo y os lo recomiendo al 100%
Asier Hermoso
Asier Hermoso
03/01/2024
Genial trabajar con él! Además de ser muy buen profesional, experto y responsable, a destacar tanto su implicación en cada proyecto, así como su trato siempre cercano y su paciencia infinita ;) Un crack!!
itxaso zubia
itxaso zubia
15/12/2023
El plugin gratuito para integrar productos de Prestashop en Wordpress muy sencillo de utilizar y muy bien documentado, os felicito.
Fernando Cózar
Fernando Cózar
02/11/2023