¿Cómo crear dinámicamente un nuevo sitio en Multisitio con un script PHP?

2 minutos de lectura

avatar de usuario
francesco

¿Cómo puedo crear un subsitio en una instalación multisitio de WordPress con un script PHP?
he leído sobre wpmu_create_blog() pero no entiendo como usarlo.

Recibo este error:

Error fatal: llamada a la función no definida wpmu_create_blog()

¿Cómo resolver esto?

avatar de usuario
brasofilo

La parte que extrañas está en esta sesión de preguntas y respuestas: Creando un nuevo blog usando PHP. Resumido en un ejemplo, ajuste el dominio y el tipo de Multisitio. Solo con fines de prueba, no dejes este archivo en su servidor en vivo.

<?php
# Load WordPress barebones
define( 'WP_USE_THEMES', false );
require( $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php' );

# Multisite domain
$main_site="example.com";

# Type of Multisite
$subdomain_install = false;

# URL param activated
if( isset( $_GET['new-site'] ) )
{
    # Create a new user
    $rand_number = rand( 1, 2000 );
    $username="user-" . $rand_number;
    $password = 'fake-password';
    // $password = wp_generate_password( 12, false );
    $email = "email+$rand_number@example.com";
    $user_id = wpmu_create_user( $username, $password, $email );
    // wp_new_user_notification( $user_id, $password );

    # Create site
    if( $subdomain_install )
    {
        $newdomain = "{$_GET['new-site']}.$main_site";
        $path="https://stackoverflow.com/";
    }
    else
    {
        $newdomain = $main_site;
        $path = "/{$_GET['new-site']}/";
    }
    $title = $_GET['new-site'];
    $blog_id = wpmu_create_blog( $newdomain, $path, $title, $user_id , array( 'public' => 1 ) );
    echo "New blog with ID = $blog_id";
} 
else
    echo 'Add to the URL: <b><tt>?new-site=NAME_OF_THE_SITE</tt></b>';

  • Hola @brasofilo, ¿aún es posible en 5.5? Además, soy bastante nuevo en Multisite, ¿dónde coloco este archivo PHP y cuándo/dónde lo llamo? Muchas gracias por la gran respuesta.

    – joshzee

    23 de febrero de 2021 a las 0:53

  • Hola @josh, sí, acabo de probar y el código aún funciona. Debe colocarse en la raíz de WP (https://yoursite.com/thiscode.php?new-site=NameOfNewSite), pero tenga en cuenta que esto es solo una prueba de concepto. Debe adaptarlo para agregar alguna capa de seguridad y también para personalizar los bits de usuario/contraseña.

    – brasofilo

    25 de febrero de 2021 a las 1:39

¿Ha sido útil esta solución?