Below are two PHP scripts you can use to help get a list of URLs of content in your WordPress site. I use these when I am migrating posts or media library files to another sites without using a plugin.
Follow the steps below to use these scripts
- Open a text editor and copy and paste one of the code blocks and save the file as
get-urls.php - Upload the get-urls.php file to the root directory of your wordpress install not your themes folder
- In your browser go to yourdomain.com/get-urls.php
Get List of Attachments
Once you have your list of URLS you can use this handy chrome extension to download them into a folder.
<?php
include "wp-load.php";
?>
<?php query_posts($args); ?>
<?php while (have_posts()) : the_post(); ?>
<?php
// https://codex.wordpress.org/Function_Reference/get_allowed_mime_types
$unsupported_mimes = array('image/jpeg', 'image/gif', 'image/png', 'image/bmp', 'image/tiff', 'image/x-icon', 'application/pdf', 'video/mp4');
$all_mimes = get_allowed_mime_types();
$accepted_mimes = array_diff($all_mimes, $unsupported_mimes);
$args = array(
'post_mime_type' => $accepted_mimes,
'order' => 'ASC',
'orderby' => 'date',
'post_type' => 'attachment',
/*
'post_parent' => $post->ID,
'date_query' => array(
'year' => 2016,
'before' => array(
'year' => 2018,
'month' => 1,
'day' => 1,
),
),
*/
//'post_status' => null,
'numberposts' => -1,
);
$attachments = get_posts($args);
if ($attachments) {
foreach ($attachments as $attachment) {
echo wp_get_attachment_url($attachment->ID);
echo "<br>";
}
}
?>
<?php endwhile; ?>
Get List of Pages
<?php
include "wp-load.php";
/**/
// Get All Post Types as List
foreach ( get_post_types( '', 'names' ) as $post_type ) {
echo "{$post_type}\n";
//echo $post_type ."<br>";
}
// Step 1. Paste all of the post types into this array below
// Step 2. Save page as .csv and remove the post types at the top
$posts = new WP_Query(array(
'post_type' => array(
'post',
'page'
),
'posts_per_page' => -1,
'post_status' => 'publish',
'depth' => -1
));
//$posts = new WP_Query('post_type=any&posts_per_page=-1&post_status=publish&depth=-1');
$posts = $posts->posts;
header('Content-type:text/plain');
echo "URL,";
echo "Type,";
echo "Date,";
echo "Title\n";
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;
}
$title = get_the_title($post->ID);
$postType = get_post_type($post->ID);
$postDate = get_the_date('Y-m-d');
echo "{$permalink},";
echo "{$postType},";
echo "{$postDate},";
echo "{$title}\n";
}
?>
Regex Find and Replace Old domain with New One
(https:\/\/www.yourdomain.com\/wp-content\/uploads\/)\d{4}\/\d{2}\/