almirot Un internauta más desde 1997

Obtener todas las URLs de los contenidos de nuestro WordPress

Publicado: 6 julio, 2015

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

Comentarios (9) Trackbacks (0)
  1. Fantástico! Me has ahorrado mucho trabajo! Aunque solo me ha exportado los artículos en inglés porque utilizo WPML.
    Muchísimas gracias!

  2. 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!

  3. 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

  4. 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!


Leave a comment

Trackbacks deshabilitados.