Cómo Crear un Paquete Personalizado de Instalación de WordPress

29 dic 2012, 10:44:29
Vistas: 15.9K
Votos: 5

Descargué la última versión de WordPress (3.5) y creé un tema personalizado. Planeo subirlo e instalarlo para múltiples clientes. ¿Es posible personalizar los ajustes predeterminados como no tener el post, página y comentario de muestra cuando se instala? ¿Y configurar el tema por defecto que se activa?

Revisé upgrade.php y schema.php y parece que ahí es donde se agregan el post, página y comentario de muestra, pero no puedo encontrar dónde se elige el tema predeterminado. ¿Existe algún artículo sobre cómo editar estos archivos o algunos consejos sobre qué hacer?

1
Comentarios

Podrías configurar una instalación inicial de WordPress y luego exportar las tablas de la base de datos para usarlas como punto de partida en los sitios de tus clientes.

shea shea
29 dic 2012 10:56:58
Todas las respuestas a la pregunta 4
0

He respondido una pregunta similar. Básicamente:

  • crea un plugin Dropin en la raíz de wp-content llamado install.php

  • dentro de install.php, crea una nueva versión de la función pluggable wp_install_defaults()

  • elimina todos los valores por defecto no deseados y personaliza a tu gusto, como:

    • update_option('template', 'tu-tema');

    • update_option('stylesheet', 'tu-tema');

    • update_option('current_theme', 'Tu Tema');

    • update_option('my_theme_options', $theme_options_array );

    • auto-activar algunos plugins incluidos

  • empaqueta todo en un solo paquete (archivos de WordPress y archivos de contenido: Tema, Plugins, install.php)

  • ahora, cada vez que ejecutes una instalación, el Dropin será procesado y el nuevo sitio iniciará con tus pre-configuraciones


Hice más pruebas en mi entorno de desarrollo y actualicé el Gist de la otra respuesta con un install.php funcional.
Ahora contiene la función wpse_4041_run_activate_plugin($plugin) (para activar plugins incluidos) y una función wp_new_blog_notification() vacía (que es otra función pluggable y evita que WP envíe un correo de notificación sobre la instalación del sitio).

Usé el tema F8 Lite para las pruebas. La mayor parte del código es una adaptación del script original (Página, Post, Comentario, Categoría, Blogroll por defecto). Y al final, mis comandos personalizados (cambiar tema, establecer opciones del tema, activar plugins, configurar opciones de plugins).

Revisa los comentarios en el archivo.


No estoy seguro si es el mejor método, pero dentro del archivo functions.php del tema coloqué este script que eliminará el archivo wp-content/install.php. Se ejecutará solo una vez (basado en esta Respuesta de @bainternet) y después de que WP haya sido instalado.

// Si la opción no existe y el script de instalación está ahí, elimínalo
if ( wpse_25643_run_once( 'my_custom_install_2013' ) )
{
    if( file_exists( WP_CONTENT_DIR.'/install.php' ) 
    {
        unlink( WP_CONTENT_DIR.'/install.php' );
    }
}

/**
 * Verifica si la opción existe
 *
 * @param string $key
 * @return boolean
 **/
function wpse_25643_run_once( $key )
{
    $test_case = get_option( 'run_once' );

    if ( isset( $test_case[$key] ) && $test_case[$key] )
    {
        return false;
    }
    else
    {
        $test_case[$key] = true;
        update_option( 'run_once', $test_case );
        return true;
    }
}

Preguntas y respuestas relacionadas con otro método que no usa install.php:
¿Script de Inicialización para Aspectos "Estándar" de un Sitio WordPress?

29 dic 2012 20:26:45
0

Estoy trabajando en un script de construcción en PHP usando Phing que instala WordPress junto con algunos valores predeterminados (temas/plugins y código personalizado), todavía está en desarrollo.

https://github.com/wycks/WordPhing/

Dentro del archivo build.xml verás algunas opciones de PHP como las siguientes que se ejecutan durante la instalación:

     //eliminar el plugin Hello Dolly 
      delete_plugins(array('hello.php'));

    //eliminar la entrada predeterminada "Hello World"
      wp_delete_post(1,true);

    //eliminar la página de ejemplo predeterminada
      wp_delete_post(2,true);

    //eliminar el comentario predeterminado de Mr.Wordpress
      wp_delete_comment( 1, true ) ;

PD: No he probado esto en la última versión o en Linux.

29 dic 2012 22:37:23
0

Configura tu instalación como desees y luego utiliza algo como http://infinitewp.com/ para duplicar la instalación en tus otras ubicaciones para los demás sitios web. Esto es lo que hacemos para una instalación base de todos nuestros proyectos.

Alternativamente, en lugar de hacer una instalación nueva de WordPress para cada sitio, haz una copia de seguridad de tu instalación existente de WP e impórtala en la nueva cuenta de alojamiento. Luego copia todos los archivos usando FTP, actualiza la configuración de la base de datos en wp-config.php para la nueva base de datos y estarás listo. Es un poco más complicado que InfiniteWP, pero significa que no tienes que pagar por el plugin.

29 dic 2012 21:17:38
0
-1

Lo que necesitas hacer es abrir el archivo wp-includes/default-constants.php y cambiar la siguiente línea (la encontrarás al final del documento) por el nombre de la carpeta de tu tema:

if ( !defined('WP_DEFAULT_THEME') )
        define( 'WP_DEFAULT_THEME', 'twentytwelve' );

Por otro lado, siempre puedes probar Duplicator. Un plugin realmente bueno que te ofrece muchas funciones adicionales.

29 dic 2012 14:31:50