Importar archivo XML de WordPress más grande que 8mb
Estoy tratando de importar un archivo XML (de un tema anterior de WordPress) a un nuevo tema de WordPress. El problema es que el archivo XML es de 46MB, mucho más grande que el límite de 8MB de WordPress. ¿Alguien tiene algún consejo o recomendación sobre cómo importar este archivo?
Gracias
apagey
OPCIÓN 1: Si un archivo WXR de WordPress, un archivo XML exportado desde WordPress, es demasiado grande para importar, hay varias cosas que puedes intentar para superar ese límite.
Aumentar la cantidad de memoria que un script de PHP puede consumir. Nota: Si estás usando un servicio de hosting compartido, es posible que necesites pedir a tu proveedor que aumente el límite.
Aumentar el límite de memoria en php.ini (ej. memory_limit = 64M ;). Muchos hosts pueden no permitir esto.
Aumentar el límite de memoria vía .htaccess (ej. php_value memory_limit 64M). Muchos hosts pueden no permitir esto.
Aumentar el límite de memoria vía wp-config.php (ej. define('WP_MEMORY_LIMIT', '64MB');)
Aumentar el tiempo máximo que un script de PHP puede ejecutarse. Nota: Si estás usando un servicio de hosting compartido, es posible que necesites pedir a tu proveedor que aumente el límite.
Aumentar el tiempo máximo de ejecución en php.ini (ej. max_execution_time = 600 ;). Muchos hosts pueden no permitir esto.
Aumentar los ajustes de tamaño de archivos de carga en PHP. Nota: Si estás usando un servicio de hosting compartido, es posible que necesites pedir a tu proveedor que aumente el límite.
Aumentar los valores en php.ini (ej. upload_max_filesize = 64M ; y post_max_size = 64M ;). Muchos hosts pueden no permitir esto.
Aumentar los valores vía .htaccess (ej. php_value upload_max_filesize 64M y php_value post_max_size = 64M). Muchos hosts pueden no permitir esto.
Aumentar los valores vía líneas ini_set en wp-config.php. Consulta con tu host para los valores correctos.
Aumentar el límite de tamaño de carga de archivos y/o el límite de espacio de carga de archivos:
Inicia sesión en wp-admin como administrador.
En el cuadro de navegación de Administración del Sitio, haz clic en "Opciones"
Desplázate hacia abajo y cambia los ajustes para "Tamaño máximo de archivo para subir" y/o "Espacio de almacenamiento del blog"
Comprime el archivo con GZip. En algunos servicios de hosting, un archivo comprimido con gzip puede expandirse automáticamente en segundo plano, sin que WordPress se entere. Esto puede permitirte reducir el tamaño del archivo para que quepa dentro de los límites de tamaño de carga máxima.
En Windows, usa 7Zip para crear un archivo gz a partir del archivo wxr.
En Linux, usa el comando gzip en la línea de comandos.
Asegúrate de que el archivo resultante tenga la extensión ".gz" antes de subirlo, ya que esto suele ser necesario.
Esto no está garantizado que funcione, ya que depende mucho de la configuración del hosting. Si falla, prueba otro método.
Divide el archivo WXR de WordPress en partes más pequeñas separando los datos entre publicaciones y copiando el encabezado/pie en cada archivo.
Como siempre, antes de importar los nuevos archivos XML, haz una copia de seguridad de la base de datos del blog al que estás importando los archivos XML y también sería bueno exportar un archivo XML de ese blog por si acaso.
Por cierto, esta información está disponible en el Codex.
OPCIÓN 2: Definitivamente es más robusto y probablemente más fácil usar el plugin WP Migrate DB Pro (de pago). A pesar del nombre, con un complemento también importa archivos multimedia. Personalmente he encontrado situaciones en las que ninguno de los métodos anteriores funcionó - la única solución fue usar este plugin.

La solución con GZip funcionó perfectamente para mí. Un archivo de 25mb se convirtió en uno de 2mb, y WordPress lo entendió perfectamente.

La solución de importación con GZip funcionó para mí, sin embargo los medios no se subieron

Si tienes acceso al archivo .htaccess en tu carpeta www. Solo incluye las siguientes 2 líneas en el .htaccess:
php_value upload_max_filesize 50M
php_value post_max_size 50M
Otra forma... puedes colocar este fragmento de código en el archivo functions.php de tu tema
@ini_set( 'upload_max_size' , '50M' );
@ini_set( 'post_max_size', '50M');

... Temporalmente. Una vez que hayas hecho la importación, probablemente deberías restaurar los valores máximos predeterminados.

No tengo acceso al archivo .htaccess, la segunda sugerencia parece viable. ¿Debería colocarse en algún lugar particular del archivo functions.php?

Desafortunadamente @ini_set( 'upload_max_size' , '50M' ); @ini_set( 'post_max_size', '50M'); no funciona, devuelve un error del servidor. ¿Alguna otra sugerencia? Seguro que alguien se ha encontrado con esto antes.

puedes probar esto http://docs.appthemes.com/tutorials/how-to-increase-upload-size-in-wordpress/

No tengo acceso al archivo php.ini y el tutorial que enviaste tampoco funcionó, obtuve el mismo error del servidor.

¿Sería posible transferir el archivo por FTP y seleccionarlo una vez en el servidor?

Según el codex, deberías poder dividir el archivo XML en partes e importarlas por separado. Así es como lo haría.
El archivo de exportación XML de WordPress está en un formato que llaman WordPress eXtended RSS (WXR), y luce así (algunas líneas omitidas):
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0"
>
<channel>
<!-- varias etiquetas sobre tu blog, incluyendo título, enlace, descripción, etc. -->
<wp:author><!-- una lista de los autores de tus publicaciones aquí --></wp:author>
<wp:category><!-- una lista de tus categorías --></wp:category>
<wp:tag><!-- información del primer etiqueta --></wp:tag>
<wp:tag><!-- información de la segunda etiqueta, etc. --></wp:tag>
<generator>http://wordpress.org/?v=3.6</generator>
<item>
<!-- primera publicación del blog aquí -->
</item>
<item>
<!-- segunda publicación del blog aquí, etc. -->
</item>
</channel>
Necesitarás dividir esto en al menos 6 archivos diferentes para mantenerte por debajo de tu límite de 8MB. Copia el archivo hasta que tengas 6 o 7 copias del mismo. Luego en cada copia, elimina algunos de los elementos <item>
(publicaciones) hasta que estés por debajo de 8MB. Así que cada archivo tendrá información idéntica en la primera parte, y solo diferirá en la sección <item>
. Asegúrate de no incluir la misma publicación en más de un archivo, o se importará dos veces. Luego importa cada archivo, uno por uno.

Existe una aplicación que puedes descargar para dividir archivos XML/WXR grandes en archivos más pequeños.
O puedes cambiar los límites de carga y publicación en tu archivo php.ini dentro de cPanel.

Esta es la solución... espero que la disfrutes.
Puedes cambiar esa configuración creando un archivo de texto simple y colocándolo en la carpeta wp-admin
.
Para crear este archivo, solo tienes que abrir un programa de texto simple como TextEdit en Mac o Bloc de notas en Windows y escribir estas dos líneas de código.
upload_max_filesize = 64M;
post_max_size = 32M;
Puedes poner cualquier valor que desees, yo solo elegí 64 y 32 porque parecían números adecuados. Ahora solo guarda el archivo y nómbralo php.ini
. El programa te preguntará si quieres usar la extensión .ini
, haz click en usar .ini
y guarda. Lo único que queda por hacer es subir el archivo a tu servidor y colocarlo en la carpeta "wp-admin
", en cualquier parte de la sección raíz de la carpeta está bien.
Ahora inicia sesión en tu panel de control de WordPress e intenta subir algo grande. No debería darte problemas y podrás subir lo que quieras.

todo lo que necesitas es este plugin
Aumentar el tamaño máximo de carga de archivos
Descarga e instala desde wordpress.org
ingresa el valor (hasta 250mb) en bytes, y disfruta.
Sin embargo, si estás subiendo un archivo grande, puede que necesites tener instalado el plugin memory bump o aumentar manualmente el tiempo de ejecución

Por favor edita tu pregunta para proporcionar un enlace al plugin que estás sugiriendo. También ten en cuenta que este plugin no funcionará si tu proveedor de hosting no te permite incrementar los valores de upload_max_filesize
(y posiblemente memory_limit
) de PHP.

Aquí está el enlace, pero también puedes buscarlo en la sección de Añadir Plugins: https://wordpress.org/plugins/upload-max-file-size/

Si está disponible para ti, WP-CLI ofrece un comando de importación que es sin duda la mejor manera de importar archivos WXR grandes. También ofrece un comando de exportación que te permite exportar archivos WXR y los dividirá en el tamaño de archivo que especifiques.

Probé este método de Gaia y funcionó sin problemas, gracias Gaia.
Comprime el archivo con GZip. En algunos servicios de hosting, un archivo comprimido con gzip puede descomprimirse automáticamente en segundo plano, sin que WordPress sepa la diferencia. Esto puede permitirte reducir el tamaño del archivo para que se ajuste a las limitaciones de tamaño máximo de carga.
En Windows, usa 7Zip para crear un archivo gz a partir del archivo wxr.
En Linux, usa el comando gzip en la terminal.
Asegúrate de que el archivo resultante tenga la extensión ".gz" antes de subirlo, ya que esto suele ser necesario.
Esto no está garantizado que funcione, ya que depende en gran medida de la configuración del hosting. Si falla, prueba otro método.
•Divide el archivo WXR de WordPress en partes más pequeñas separando los datos entre publicaciones y copiando el encabezado/pie en cada archivo.

Siempre he encontrado que la forma más sencilla es editando el archivo user.ini en la raíz de la instalación de WP, o agregando uno.
Plugins como WordFence y otros que necesitan operar con configuraciones del sistema, a menudo hacen esto porque funciona bien con WordPress y varios sistemas.
Edita o crea un archivo user.ini en el directorio raíz de WP, copia/pega el código abajo y guárdalo. Si estás usando algún tipo de caché, límpialo y luego actualiza la página donde estás subiendo archivos.
En mi instalación de WP la memoria está configurada a 64M y limité los tamaños de archivo a 5M.
Cambia tanto upload_max_filesize
como post_max_size
a un valor mayor que el archivo que estás subiendo.
; Memoria y tamaños de archivo
memory_limit = 64M
upload_max_filesize = 5M
post_max_size = 5M
file_uploads = On
max_execution_time = 300
; Fin de restricciones de subida

Probé wpcli
ya que es una interfaz de línea de comandos, muchas cosas se manejan directamente desde su lado.
El tamaño de mi archivo XML era de aproximadamente 10 MB.
En wp-config.php
set_time_limit( 86400 );
define('WP_CACHE', false);
define('WP_MEMORY_LIMIT', '1G');
define('WP_MAX_MEMORY_LIMIT', '1G');
Ejemplo de wpcli
$ wp import example.wordpress.2016-06-21.xml --authors=skip
