De cara a una migración del contenido de un blog a otro, y por consiguiente de tener que incluir en el fichero .htaccess del primer blog un buen puñado de redirecciones 301, me he encontrado con la necesidad de obtener el listado de URLs de todas las entradas y páginas de una instalación de WordPress.
Seguramente habrá algún plugin u otro método más sencillo para hacerlo, pero al final he tirado de un sencillo script publicado en stackoverflow con alguna pequeña modificación:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <?php $parse_uri = explode( 'wp-content', $_SERVER['SCRIPT_FILENAME'] ); require_once( $parse_uri[0] . 'wp-load.php' ); $posts = new WP_Query('post_type=any&posts_per_page=-1&post_status=publish'); $posts = $posts->posts; header('Content-Type: text/plain; charset=utf-8'); $post_id = 0; foreach($posts as $post) { switch ($post->post_type) { case 'revision': case 'nav_menu_item': break; case 'page': $permalink = get_page_link($post->ID); break; case 'post': $permalink = get_permalink($post->ID); break; case 'attachment': $permalink = get_attachment_link($post->ID); break; default: $permalink = get_post_permalink($post->ID); break; } $post_id++; echo "n{$post_id}t{$post->post_type}t{$permalink}t{$post->post_title}"; } ?> |
De esta forma obtenemos una línea por cada post o página del blog que incluye número, tipo, URL y título del contenido. En caso de que solamente necesitamos las URLs deberemos modificar la línea 29 del anterior código por la siguiente:
echo "n{$permalink}"; |
Este código debemos guardarlo como fichero php en la carpeta wp-content y a continuación ejecutarlo vía web. En el caso de este blog, si tuviera el script público, se accedería desde http://almirot.com/wp-content/generar_urls.php
Fantástico! Me has ahorrado mucho trabajo! Aunque solo me ha exportado los artículos en inglés porque utilizo WPML.
Muchísimas gracias!
Hola Vero! Me alegro que te haya servido el artículo 🙂 Te he escrito al correo sobre la consulta de WPML.
Puedes pasarme el código para sacar las urls de todos los idiomas con wpml?
Hola Alberto.
Me ha servido de gran ayuda el script, sin embargo, quisiera saber cómo añadir también al resultado la URL de la imagen destacada en cada uno de los post.
Te agradecería la ayuda. ¡Saludos!
Hola Johnnie te he escrito a tu correo acerca de la duda para obtener también la dirección web de la imagen destacada de los artículos.
Buenas tardes,
Acabo de encontrar este post y la verdad que me ha sido de mucha ayuda.
Quisiera añadir las URLs de los videos, imágenes y categorías de cada uno de los post, espero que me puedas ayudar.
Un saludo y muchas gracias por este gran post
Hola Pablo, te mando un correo pidiéndote más detalles a ver si puedo echarte una mano
Buenas tardes,
¿Podrías contactar conmigo? Necesito preguntarte por privado.
Un saludo
Pablo
Genial, justo estoy en proceso de cambiar los permanent links de mi wordpress y no sabía cómo sacar el listado de todos los posts para hacer las redirecciones 301.
Graciasssssss!
Me alegro que te haya servido Iñaki 😀 Un enlace desde tu web a mi blog de viajes (ofertasparaviajar.com) se agradecería como propina jaja
Hola,
Este artículo es justo lo que estaba buscando, ya que ando clonando mis webs y los enlaces están siendo un quebradero de cabeza.
Sin embargo, dada mi inexperiencia en el mundo php y aunque he seguido tus instrucciones, al ejecutar el script no he conseguido una línea por cada post, sino un fichero infumable con toas las lineas seguidas sin tabulación. ¿Serías tan amable de escribirme un privado y echarme una mano?
Prueba a abrir el fichero con un programa como notepad++ (gratuito).
A la pregunta de Sara de que los post aparecen seguidos sin tabulación sólo deben REEMPLAZAR la linea de código donde sale echo así:
echo «{$permalink}t{$post->post_type}t{$permalink}t{$post->post_title}\n»;