array('Thumbnail','thumbnail'), 'post_id' => false, // Build functionality in later 'attachment' => true, 'default_size' => 'thumbnail', 'default_image' => false, 'order_of_image' => 1, 'link_to_post' => true, 'image_class' => false, 'image_scan' => false, 'width' => false, 'height' => false, 'echo' => true ); $args = apply_filters('get_the_image_args', $args); $args = wp_parse_args($args, $defaults); extract($args); if(!is_array($custom_key)) : $custom_key = str_replace(' ', '', $custom_key); $custom_key = str_replace(array('+'), ',', $custom_key); $custom_key = explode(',', $custom_key); $args['custom_key'] = $custom_key; endif; if($custom_key && $custom_key !== 'false' && $custom_key !== '0') $image = image_by_custom_field($args); if(!$image && $attachment && $attachment !== 'false' && $attachment !=='0') $image = image_by_attachment($args); if(!$image && $image_scan) $image = image_by_scan($args); if(!$image && $default_image) $image = image_by_default($args); if($image) $image = display_the_image($args, $image); else $image = ''; if($echo && $echo !== 'false' && $echo !== '0') echo $image; else return $image; } /** * Calls images by custom field key * Allow looping through multiple custom fields * * @since 0.4 * @param $args Not Optional * @return array $image, $classes, $alt */ function image_by_custom_field($args = array()) { extract($args); if(!$post_id) global $post; if(isset($custom_key)) : foreach($custom_key as $custom) : $image = get_post_meta($post->ID, $custom, true); if($image) : break; endif; endforeach; if(!$image) : return false; endif; endif; return array('image' => $image); } /** * Check for attachment images * Uses get_children() to check if the post has images attached * * @since 0.4 * @param $args Not Optional * @return array $image, $classes, $alt, $caption */ function image_by_attachment($args = array()) { extract($args); if(!$post_id) global $post; /* * Use a WP 2.6 function to check */ if(function_exists('wp_enqueue_style')) : $attachments = get_children(array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID')); /* * WP 2.5 compatibility */ else : $attachments = get_children("post_parent=$post->ID&post_type=attachment&post_mime_type=image&orderby=\"menu_order ASC, ID ASC\""); endif; if($attachments) : foreach($attachments as $id => $attachment) : $i++; if($i == $order_of_image) : $image = wp_get_attachment_image_src($id, $default_size); $image = $image[0]; break; endif; endforeach; endif; return array('image' => $image); } /** * Scans the post for images within the content * Not called by default with get_the_image() * Shouldn't use if using large images within posts, better to use the other options * * @since 0.4 * @param $args Not Optional * @return $image, $classes, $alt */ function image_by_scan($args = array()) { if(!$post_id) global $post; preg_match_all('||i', $post->post_content, $matches); if(isset($matches)) $image = $matches[1][0]; if($matches) return array('image' => $image); else return false; } /** * Used for setting a default image * Not used with get_the_image() by default * * @since 0.4 * @param $args Not Optional * @return array $image, $classes, $alt */ function image_by_default($args = array()) { extract($args); $image = $default_image; return array('image' => $image); } /** * Formats an image with appropriate alt text and class * Adds a link to the post if argument is set * Should only be called if there is an image to display, but will handle it if not * * @since 0.1 * @param $args Not Optional * @param $arr Array of image info ($image, $classes, $alt, $caption) * @return string Formatted image (w/link to post if the option is set) */ function display_the_image($args = array(), $arr = false) { global $post; extract($arr); if(!$image) return; extract($args); if($width) $width = ' width="' . $width . '"'; if($height) $height = ' height="' . $height . '"'; $img = $image; if(is_array($custom_key)) : foreach($custom_key as $key) : if($key !== 'false' && $key !== '0') : $classes[] = str_replace(' ', '-', strtolower($key)); endif; endforeach; endif; $classes[] = $default_size; $classes[] = $image_class; $class = join(' ', $classes); $image = ''; if($link_to_post) $image .= ''; $image .= '' . the_title_attribute('echo=0') . ''; if($link_to_post) $image .= ''; return $image; } /** * Deprecated function needs to be replaced with get_the_image() * * @since 0.1 * @deprecated 0.4 */ function get_the_image_link($deprecated = false, $deprecated_2 = false, $deprecated_3 = false) { _e('The function has been deprecated. You need to update your template file calls to get_the_image().','hybrid'); } ?>