Random featured images in wordpress

I’ve had random header images on the Fedibblety Family blog for quite some time. I originally implemented this by looking for images in a particular directory. However, I had to manually add pictures to this directory, which was a bit cumbersome. I started thinking, why not just select randomly from all the featured images I have for my posts? So I hacked up a quick function to do that. Here it is:

function get_random_header_images() {
  global $wpdb;
  $featured_image_query = "select id from wp_postmeta join wp_posts on wp_postmeta.meta_value=wp_posts.id where meta_key='_thumbnail_id' order by rand() limit 10";
  $img1 = '';
  $img2  = '';
  $featured_images = $wpdb->get_results($featured_image_query);
  foreach ($featured_images as $img) {
    $img_src = wp_get_attachment_image_src( $img->id, 'medium');
    $ratio = $img_src[1] / $img_src[2];
    if ($ratio > 1.3 and $ratio < 1.6) {
      // make sure that the image isn't too big, and that it has been scaled by WordPress
      if ($img_src[1] > 250 or preg_match("/[0-9]+x[0-9]+/", $img_src[0]) == 0)
        continue;
      if ($img1=='') {
        $img1=$img_src[0];
      } elseif ($img2=='') {
        $img2=$img_src[0];
        break;
      }
    }
  }
  return (array($img1,$img2));
}
This entry was posted in php, sql, wordpress. Bookmark the permalink.

Comments are closed.