Introduce require_if_theme_supports(), move post thumbnails functions to there own include and only included them if the theme supports them. See #10928 and [12132]

git-svn-id: https://develop.svn.wordpress.org/trunk@12134 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Peter Westwood
2009-11-01 10:10:06 +00:00
parent 7f3d6064fe
commit 20bd817385
4 changed files with 61 additions and 35 deletions

View File

@@ -0,0 +1,43 @@
<?php
/**
* WordPress Post Image Template Functions.
*
* Support for post thumbnails
* Themes function.php must call add_theme_support( 'post-thumbnails' ) to use these.
*
* @package WordPress
* @subpackage Template
*/
function has_post_image( $post_id = NULL ) {
global $id;
$post_id = ( NULL === $post_id ) ? $id : $post_id;
return !! get_post_image_id( $post_id );
}
function get_post_image_id( $post_id = NULL ) {
global $id;
$post_id = ( NULL === $post_id ) ? $id : $post_id;
return get_post_meta( $post_id, '_thumbnail_id', true );
}
function the_post_image( $size = 'thumbnail', $attr = '' ) {
echo get_the_post_image( NULL, $size, $attr );
}
function get_the_post_image( $post_id = NULL, $size = 'thumbnail', $attr = '' ) {
global $id;
$post_id = ( NULL === $post_id ) ? $id : $post_id;
$post_image_id = get_post_image_id( $post_id );
$size = apply_filters( 'post_image_size', $size );
if ( $post_image_id ) {
do_action( 'begin_fetch_post_image_html', $post_id, $post_image_id, $size ); // for "Just In Time" filtering of all of wp_get_attachment_image()'s filters
$html = wp_get_attachment_image( $post_image_id, $size, false, $attr );
do_action( 'end_fetch_post_image_html', $post_id, $post_image_id, $size );
} else {
$html = '';
}
return apply_filters( 'post_image_html', $html, $post_id, $post_image_id );
}
?>

View File

@@ -880,41 +880,6 @@ function walk_page_dropdown_tree() {
return call_user_func_array(array(&$walker, 'walk'), $args);
}
//
// Post images
//
function has_post_image( $post_id = NULL ) {
global $id;
$post_id = ( NULL === $post_id ) ? $id : $post_id;
return !! get_post_image_id( $post_id );
}
function get_post_image_id( $post_id = NULL ) {
global $id;
$post_id = ( NULL === $post_id ) ? $id : $post_id;
return get_post_meta( $post_id, '_thumbnail_id', true );
}
function the_post_image( $size = 'thumbnail', $attr = '' ) {
echo get_the_post_image( NULL, $size, $attr );
}
function get_the_post_image( $post_id = NULL, $size = 'thumbnail', $attr = '' ) {
global $id;
$post_id = ( NULL === $post_id ) ? $id : $post_id;
$post_image_id = get_post_image_id( $post_id );
$size = apply_filters( 'post_image_size', $size );
if ( $post_image_id ) {
do_action( 'begin_fetch_post_image_html', $post_id, $post_image_id, $size ); // for "Just In Time" filtering of all of wp_get_attachment_image()'s filters
$html = wp_get_attachment_image( $post_image_id, $size, false, $attr );
do_action( 'end_fetch_post_image_html', $post_id, $post_image_id, $size );
} else {
$html = '';
}
return apply_filters( 'post_image_html', $html, $post_id, $post_image_id );
}
//
// Attachments
//

View File

@@ -1305,6 +1305,8 @@ function add_custom_image_header($header_callback, $admin_header_callback) {
/**
* Allows a theme to register its support of a certain feature
*
* Must be called in the themes functions.php file to work.
*
* @author Mark Jaquith
* @since 2.9
@@ -1329,4 +1331,17 @@ function current_theme_supports( $feature ) {
return ( isset( $_wp_theme_features[$feature] ) && $_wp_theme_features[$feature] );
}
/**
* Checks a theme's support for a given feature before loading the functions which implement it.
*
* @author Peter Westwood
* @since 2.9
* @param string $feature the feature being checked
* @param string $include the file containing the functions that implement the feature
*/
function require_if_theme_supports( $feature, $include) {
if ( current_theme_supports( $feature ) )
require ( $include );
}
?>

View File

@@ -687,6 +687,9 @@ if ( TEMPLATEPATH !== STYLESHEETPATH && file_exists(STYLESHEETPATH . '/functions
if ( file_exists(TEMPLATEPATH . '/functions.php') )
include(TEMPLATEPATH . '/functions.php');
// Load in support for template functions which the theme supports
require_if_theme_supports( 'post-thumbnails', ABSPATH . WPINC . '/post-image-template.php' );
/**
* Runs just before PHP shuts down execution.
*