Hacer que WordPress genere un archivo XML personalizado (no un mapa del sitio) que se actualice solo cuando se publique nuevo contenido

13 ene 2011, 01:31:27
Vistas: 14K
Votos: 1

No estoy buscando un mapa del sitio, quiero crear un archivo XML al que pueda acceder un menú flash, pero no quiero generar el archivo XML cada vez que alguien visita una página, prefiero tener un XML estático para mayor velocidad. Y me gustaría que WordPress actualice el archivo cada vez que se publique nuevo contenido (no comentarios).

¿Hay algo integrado en WordPress que me permita hacer esto? ¿Algún plugin? Nuevamente, no quiero un mapa del sitio. Quiero una lista específica de elementos. Actualmente he estado usando plantillas de página con loops personalizados, pero tarda demasiado en generarse cada vez.

1
Comentarios

Consulta mi respuesta en este enlace, está respondida según esta pregunta: http://wordpress.stackexchange.com/questions/15218/how-to-generate-update-a-xml-sitemap-without-plugins/36856#36856

w3uiguru w3uiguru
19 dic 2011 12:45:11
Todas las respuestas a la pregunta 3
0

No hay ninguna función incorporada, pero deberías investigar los diversos plugins de mapas del sitio. Estos te mostrarán a) dónde engancharte y b) cómo generar el archivo si no estás familiarizado con la manipulación de archivos PHP.

13 ene 2011 02:51:44
1

Echa un vistazo a la función export_wp.

Haz una copia de ella y conserva solo lo que quieras exportar, luego ejecuta esta función cada vez que se guarde una publicación: add_action('save_post', 'my_export_wp');

(Configúrala para que la función envíe su salida a un archivo xml)

13 ene 2011 04:22:16
Comentarios

Ese archivo es un poco abrumador. Creo que me quedaré con la sugerencia anterior

Ghost9 Ghost9
13 ene 2011 08:52:55
5

Mmm... no estoy seguro si hay funciones específicas de WordPress para crear archivos. Existe wp_handle_upload, pero no estoy seguro de cómo la usarías en este contexto.

Dependiendo de la configuración de tu servidor, probablemente puedas usar fopen y fwrite para hacer esto.

Mantén el código que estás usando actualmente (con tus bucles personalizados... asumo que contienen el marcado XML que deseas), pero haz que construya la salida como una cadena. Luego guarda esa cadena en un archivo. Algo como:

// Construye el contenido del archivo como una cadena
$file_contents = '<?xml version="1.0" ?><yourroot><item>algún contenido</item></yourroot></xml>';

// Abre o crea un archivo (esto lo hace en el mismo directorio que el script)
$my_file = fopen("miarchivo.xml", "w");

// Escribe el contenido de la cadena en ese archivo
fwrite($my_file, $file_contents);

// Ciérralo
fclose($my_file);

Por supuesto, todo esto depende de la configuración y permisos de tu servidor. Tal vez alguien tenga una mejor solución que solo requiera funciones nativas de WordPress.

13 ene 2011 02:18:19
Comentarios

la parte de "hacer que construya la salida como una cadena" no estoy seguro. ¿pondría la URL como $file_contents = http://blog.com/sitetemplate

Ghost9 Ghost9
13 ene 2011 02:58:37

¿cómo haría para que ese archivo se llamara cada vez que alguien publicara algo?

Ghost9 Ghost9
13 ene 2011 03:13:45

¡ah! tengo una respuesta para eso. Ahora mi única pregunta es, ¿hay alguna manera de establecer la ruta de guardado? para poder elegir el directorio donde se guarda?

Ghost9 Ghost9
13 ene 2011 05:45:12

Claro. fopen debería poder aceptar una ruta local completa (algo como var/www/html/tucarpetadesitio/otracarpeta/tuarchivo.xml). Por supuesto, esto dependerá de tener los permisos de escritura correctos en esa carpeta.

MathSmath MathSmath
13 ene 2011 06:39:08

puedes hacer esto con una función llamada: file_put_contents(); - http://php.net/manual/en/function.file-put-contents.php

hakre hakre
23 ene 2011 03:02:50