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