2004-01-27 04:58:01 -05:00
< ? php
2006-06-07 19:17:59 -04:00
//
// "The Loop" post functions
//
2005-10-18 18:42:02 -04:00
2004-01-27 04:58:01 -05:00
function the_ID () {
2004-02-16 23:56:29 -05:00
global $id ;
echo $id ;
2004-01-27 04:58:01 -05:00
}
2006-06-07 19:17:59 -04:00
2006-03-16 20:16:22 -05:00
function get_the_ID () {
global $id ;
return $id ;
}
2005-10-18 18:42:02 -04:00
2006-06-07 19:17:59 -04:00
2004-01-27 04:58:01 -05:00
function the_title ( $before = '' , $after = '' , $echo = true ) {
2004-02-16 23:56:29 -05:00
$title = get_the_title ();
2007-06-25 13:48:35 -04:00
2007-09-18 18:50:59 -04:00
if ( strlen ( $title ) == 0 )
2007-06-25 13:48:35 -04:00
return ;
$title = $before . $title . $after ;
if ( $echo )
echo $title ;
else
return $title ;
2004-01-27 04:58:01 -05:00
}
2004-02-16 23:56:29 -05:00
2007-09-18 18:50:59 -04:00
function the_title_attribute ( $args = '' ) {
$title = get_the_title ();
if ( strlen ( $title ) == 0 )
return ;
$defaults = array ( 'before' => '' , 'after' => '' , 'echo' => true );
$r = wp_parse_args ( $args , $defaults );
extract ( $r , EXTR_SKIP );
$title = $before . $title . $after ;
$title = attribute_escape ( strip_tags ( $title ));
if ( $echo )
echo $title ;
else
return $title ;
}
2005-10-18 18:42:02 -04:00
2007-06-25 13:48:35 -04:00
function get_the_title ( $id = 0 ) {
2005-03-27 15:45:01 -05:00
$post = & get_post ( $id );
$title = $post -> post_title ;
2008-03-19 17:33:47 -04:00
if ( ! is_admin () ) {
if ( ! empty ( $post -> post_password ) )
$title = sprintf ( __ ( 'Protected: %s' ), $title );
else if ( isset ( $post -> post_status ) && 'private' == $post -> post_status )
$title = sprintf ( __ ( 'Private: %s' ), $title );
}
2007-06-25 13:48:35 -04:00
return apply_filters ( 'the_title' , $title );
2004-01-27 04:58:01 -05:00
}
2006-06-07 19:17:59 -04:00
function the_guid ( $id = 0 ) {
echo get_the_guid ( $id );
}
2005-10-18 18:42:02 -04:00
2005-01-07 17:01:59 -05:00
function get_the_guid ( $id = 0 ) {
2005-03-27 15:45:01 -05:00
$post = & get_post ( $id );
2005-10-18 18:42:02 -04:00
2005-03-27 15:45:01 -05:00
return apply_filters ( 'get_the_guid' , $post -> guid );
2005-01-07 17:01:59 -05:00
}
2008-08-05 02:40:44 -04:00
function the_content ( $more_link_text = NULL , $stripteaser = 0 , $more_file = '' ) {
2005-10-18 18:42:02 -04:00
$content = get_the_content ( $more_link_text , $stripteaser , $more_file );
$content = apply_filters ( 'the_content' , $content );
$content = str_replace ( ']]>' , ']]>' , $content );
echo $content ;
2004-01-27 04:58:01 -05:00
}
2005-10-18 18:42:02 -04:00
2008-08-05 02:40:44 -04:00
function get_the_content ( $more_link_text = NULL , $stripteaser = 0 , $more_file = '' ) {
2007-12-06 14:49:33 -05:00
global $id , $post , $more , $page , $pages , $multipage , $preview , $pagenow ;
2008-08-05 02:40:44 -04:00
if ( NULL == $more_link_text )
$more_link_text = __ ( '(more...)' );
2005-10-18 18:42:02 -04:00
$output = '' ;
if ( ! empty ( $post -> post_password ) ) { // if there's a password
2008-02-02 13:42:09 -05:00
if ( ! isset ( $_COOKIE [ 'wp-postpass_' . COOKIEHASH ]) || stripslashes ( $_COOKIE [ 'wp-postpass_' . COOKIEHASH ]) != $post -> post_password ) { // and it doesn't match the cookie
2005-10-18 18:42:02 -04:00
$output = get_the_password_form ();
return $output ;
}
}
if ( $more_file != '' )
$file = $more_file ;
else
$file = $pagenow ; //$_SERVER['PHP_SELF'];
2006-08-18 04:36:11 -04:00
if ( $page > count ( $pages ) ) // if the requested page doesn't exist
$page = count ( $pages ); // give them the highest numbered page that DOES exist
2005-10-18 18:42:02 -04:00
$content = $pages [ $page - 1 ];
2007-04-11 18:47:36 -04:00
if ( preg_match ( '/<!--more(.*?)?-->/' , $content , $matches ) ) {
2006-08-01 00:54:23 -04:00
$content = explode ( $matches [ 0 ], $content , 2 );
2006-09-11 19:59:00 -04:00
if ( ! empty ( $matches [ 1 ]) && ! empty ( $more_link_text ) )
2006-08-01 00:54:23 -04:00
$more_link_text = strip_tags ( wp_kses_no_null ( trim ( $matches [ 1 ])));
2006-08-01 09:53:04 -04:00
} else {
$content = array ( $content );
2006-08-01 00:54:23 -04:00
}
2006-04-25 04:46:19 -04:00
if ( ( false !== strpos ( $post -> post_content , '<!--noteaser-->' ) && (( ! $multipage ) || ( $page == 1 ))) )
2005-10-18 18:42:02 -04:00
$stripteaser = 1 ;
$teaser = $content [ 0 ];
if ( ( $more ) && ( $stripteaser ) )
$teaser = '' ;
$output .= $teaser ;
if ( count ( $content ) > 1 ) {
2006-09-11 19:59:00 -04:00
if ( $more ) {
2007-02-22 20:15:51 -05:00
$output .= '<span id="more-' . $id . '"></span>' . $content [ 1 ];
2006-09-11 19:59:00 -04:00
} else {
$output = balanceTags ( $output );
if ( ! empty ( $more_link_text ) )
2007-09-18 12:44:35 -04:00
$output .= ' <a href="' . get_permalink () . " #more- $id\ " class = \ " more-link \" > $more_link_text </a> " ;
2006-09-11 19:59:00 -04:00
}
2007-02-27 10:24:54 -05:00
2005-10-18 18:42:02 -04:00
}
if ( $preview ) // preview fix for javascript bug with foreign languages
$output = preg_replace ( '/\%u([0-9A-F]{4,4})/e' , " '&#'.base_convert(' \\ 1',16,10).';' " , $output );
return $output ;
2004-01-27 04:58:01 -05:00
}
2005-10-18 18:42:02 -04:00
2004-01-27 04:58:01 -05:00
function the_excerpt () {
2005-02-14 19:21:21 -05:00
echo apply_filters ( 'the_excerpt' , get_the_excerpt ());
2004-01-27 04:58:01 -05:00
}
2005-10-18 18:42:02 -04:00
2007-12-06 14:49:33 -05:00
function get_the_excerpt ( $deprecated = '' ) {
global $post ;
2005-02-14 19:21:21 -05:00
$output = '' ;
$output = $post -> post_excerpt ;
2005-10-18 18:42:02 -04:00
if ( ! empty ( $post -> post_password ) ) { // if there's a password
2008-02-02 13:42:09 -05:00
if ( ! isset ( $_COOKIE [ 'wp-postpass_' . COOKIEHASH ]) || $_COOKIE [ 'wp-postpass_' . COOKIEHASH ] != $post -> post_password ) { // and it doesn't match the cookie
2005-02-14 19:21:21 -05:00
$output = __ ( 'There is no excerpt because this is a protected post.' );
return $output ;
}
}
2004-02-22 09:39:04 -05:00
2005-02-14 19:21:21 -05:00
return apply_filters ( 'get_the_excerpt' , $output );
2004-01-27 04:58:01 -05:00
}
2007-04-22 00:25:47 -04:00
function has_excerpt ( $id = 0 ) {
$post = & get_post ( $id );
return ( ! empty ( $post -> post_excerpt ) );
}
2005-10-18 18:42:02 -04:00
2004-04-24 15:23:57 -04:00
function wp_link_pages ( $args = '' ) {
2007-05-10 23:10:05 -04:00
$defaults = array (
2007-09-03 19:32:58 -04:00
'before' => '<p>' . __ ( 'Pages:' ), 'after' => '</p>' ,
'next_or_number' => 'number' , 'nextpagelink' => __ ( 'Next page' ),
'previouspagelink' => __ ( 'Previous page' ), 'pagelink' => '%' ,
2007-05-10 23:10:05 -04:00
'more_file' => '' , 'echo' => 1
);
2007-06-13 22:25:30 -04:00
2007-05-10 23:10:05 -04:00
$r = wp_parse_args ( $args , $defaults );
2007-06-14 18:45:40 -04:00
extract ( $r , EXTR_SKIP );
2007-05-10 23:10:05 -04:00
2007-12-06 14:49:33 -05:00
global $post , $page , $numpages , $multipage , $more , $pagenow ;
2005-10-18 18:42:02 -04:00
if ( $more_file != '' )
$file = $more_file ;
else
$file = $pagenow ;
2006-08-30 17:00:37 -04:00
$output = '' ;
2005-10-18 18:42:02 -04:00
if ( $multipage ) {
if ( 'number' == $next_or_number ) {
2006-08-30 17:00:37 -04:00
$output .= $before ;
2005-10-18 18:42:02 -04:00
for ( $i = 1 ; $i < ( $numpages + 1 ); $i = $i + 1 ) {
$j = str_replace ( '%' , " $i " , $pagelink );
2006-08-30 17:00:37 -04:00
$output .= ' ' ;
2005-10-18 18:42:02 -04:00
if ( ( $i != $page ) || (( ! $more ) && ( $page == 1 )) ) {
2007-03-10 01:09:52 -05:00
if ( 1 == $i ) {
$output .= '<a href="' . get_permalink () . '">' ;
2007-03-10 00:54:12 -05:00
} else {
2007-06-14 12:24:28 -04:00
if ( '' == get_option ( 'permalink_structure' ) || in_array ( $post -> post_status , array ( 'draft' , 'pending' )) )
2007-03-10 01:09:52 -05:00
$output .= '<a href="' . get_permalink () . '&page=' . $i . '">' ;
2007-03-10 00:54:12 -05:00
else
2007-03-10 01:18:43 -05:00
$output .= '<a href="' . trailingslashit ( get_permalink ()) . user_trailingslashit ( $i , 'single_paged' ) . '">' ;
2007-03-10 00:54:12 -05:00
}
2005-10-18 18:42:02 -04:00
}
2006-08-30 17:00:37 -04:00
$output .= $j ;
2005-10-18 18:42:02 -04:00
if ( ( $i != $page ) || (( ! $more ) && ( $page == 1 )) )
2006-08-30 17:00:37 -04:00
$output .= '</a>' ;
2005-10-18 18:42:02 -04:00
}
2006-08-30 17:00:37 -04:00
$output .= $after ;
2005-10-18 18:42:02 -04:00
} else {
if ( $more ) {
2006-08-30 17:00:37 -04:00
$output .= $before ;
2005-10-18 18:42:02 -04:00
$i = $page - 1 ;
if ( $i && $more ) {
2007-03-10 01:09:52 -05:00
if ( 1 == $i ) {
$output .= '<a href="' . get_permalink () . '">' . $previouspagelink . '</a>' ;
} else {
2007-06-14 12:24:28 -04:00
if ( '' == get_option ( 'permalink_structure' ) || in_array ( $post -> post_status , array ( 'draft' , 'pending' )) )
2007-03-10 01:09:52 -05:00
$output .= '<a href="' . get_permalink () . '&page=' . $i . '">' . $previouspagelink . '</a>' ;
else
2007-03-10 01:18:43 -05:00
$output .= '<a href="' . trailingslashit ( get_permalink ()) . user_trailingslashit ( $i , 'single_paged' ) . '">' . $previouspagelink . '</a>' ;
2007-03-10 01:09:52 -05:00
}
2005-10-18 18:42:02 -04:00
}
$i = $page + 1 ;
if ( $i <= $numpages && $more ) {
2007-03-10 01:09:52 -05:00
if ( 1 == $i ) {
$output .= '<a href="' . get_permalink () . '">' . $nextpagelink . '</a>' ;
} else {
2007-06-14 12:24:28 -04:00
if ( '' == get_option ( 'permalink_structure' ) || in_array ( $post -> post_status , array ( 'draft' , 'pending' )) )
2007-03-10 01:09:52 -05:00
$output .= '<a href="' . get_permalink () . '&page=' . $i . '">' . $nextpagelink . '</a>' ;
else
2007-03-10 01:18:43 -05:00
$output .= '<a href="' . trailingslashit ( get_permalink ()) . user_trailingslashit ( $i , 'single_paged' ) . '">' . $nextpagelink . '</a>' ;
2007-03-10 01:09:52 -05:00
}
2005-10-18 18:42:02 -04:00
}
2006-08-30 17:00:37 -04:00
$output .= $after ;
2005-10-18 18:42:02 -04:00
}
}
}
2006-08-30 17:00:37 -04:00
if ( $echo )
echo $output ;
return $output ;
2004-01-27 04:58:01 -05:00
}
2005-10-18 18:42:02 -04:00
2006-06-07 19:17:59 -04:00
//
// Post-meta: Custom per-post fields.
//
2004-02-26 16:42:47 -05:00
2005-10-18 18:42:02 -04:00
2005-02-02 17:52:47 -05:00
function post_custom ( $key = '' ) {
2006-01-25 02:38:43 -05:00
$custom = get_post_custom ();
2005-10-18 18:42:02 -04:00
2006-01-25 02:38:43 -05:00
if ( 1 == count ( $custom [ $key ]) )
return $custom [ $key ][ 0 ];
2005-10-18 18:42:02 -04:00
else
2006-01-25 02:38:43 -05:00
return $custom [ $key ];
2005-02-02 17:52:47 -05:00
}
2005-10-18 18:42:02 -04:00
2004-02-26 16:42:47 -05:00
// this will probably change at some point...
function the_meta () {
2005-10-18 18:42:02 -04:00
if ( $keys = get_post_custom_keys () ) {
2004-03-29 13:46:33 -05:00
echo " <ul class='post-meta'> \n " ;
2005-10-18 18:42:02 -04:00
foreach ( $keys as $key ) {
2006-02-20 12:13:06 -05:00
$keyt = trim ( $key );
if ( '_' == $keyt { 0 } )
continue ;
2006-01-25 02:38:43 -05:00
$values = array_map ( 'trim' , get_post_custom_values ( $key ));
2004-02-26 17:22:54 -05:00
$value = implode ( $values , ', ' );
2007-04-11 01:38:30 -04:00
echo apply_filters ( 'the_meta_key' , " <li><span class='post-meta-key'> $key :</span> $value </li> \n " , $key , $value );
2004-02-26 16:42:47 -05:00
}
echo " </ul> \n " ;
}
}
2004-10-08 22:03:37 -04:00
2006-06-07 19:17:59 -04:00
//
// Pages
//
2004-12-30 14:41:14 -05:00
2006-02-27 22:57:08 -05:00
function wp_dropdown_pages ( $args = '' ) {
2007-05-10 23:10:05 -04:00
$defaults = array (
2007-09-03 19:32:58 -04:00
'depth' => 0 , 'child_of' => 0 ,
'selected' => 0 , 'echo' => 1 ,
2007-05-10 23:10:05 -04:00
'name' => 'page_id' , 'show_option_none' => ''
);
2007-06-13 22:25:30 -04:00
2007-05-10 23:10:05 -04:00
$r = wp_parse_args ( $args , $defaults );
2007-06-14 18:45:40 -04:00
extract ( $r , EXTR_SKIP );
2006-02-27 22:57:08 -05:00
2006-03-02 00:47:59 -05:00
$pages = get_pages ( $r );
2006-02-27 22:57:08 -05:00
$output = '' ;
if ( ! empty ( $pages ) ) {
2008-05-04 06:37:06 -04:00
$output = " <select name=' $name ' id=' $name '> \n " ;
2006-06-07 19:27:25 -04:00
if ( $show_option_none )
$output .= " \t <option value=''> $show_option_none </option> \n " ;
2006-04-13 00:40:48 -04:00
$output .= walk_page_dropdown_tree ( $pages , $depth , $r );
2006-02-27 22:57:08 -05:00
$output .= " </select> \n " ;
}
$output = apply_filters ( 'wp_dropdown_pages' , $output );
if ( $echo )
echo $output ;
return $output ;
}
2004-12-30 14:41:14 -05:00
function wp_list_pages ( $args = '' ) {
2007-05-10 23:10:05 -04:00
$defaults = array (
2007-09-03 19:32:58 -04:00
'depth' => 0 , 'show_date' => '' ,
'date_format' => get_option ( 'date_format' ),
'child_of' => 0 , 'exclude' => '' ,
'title_li' => __ ( 'Pages' ), 'echo' => 1 ,
2007-05-10 23:10:05 -04:00
'authors' => '' , 'sort_column' => 'menu_order, post_title'
);
2007-06-13 22:25:30 -04:00
2007-05-10 23:10:05 -04:00
$r = wp_parse_args ( $args , $defaults );
2007-06-14 18:45:40 -04:00
extract ( $r , EXTR_SKIP );
2005-10-18 18:42:02 -04:00
2005-04-20 20:49:15 -04:00
$output = '' ;
2007-02-02 11:38:26 -05:00
$current_page = 0 ;
2004-12-30 14:41:14 -05:00
2006-12-03 04:23:17 -05:00
// sanitize, mostly to keep spaces out
$r [ 'exclude' ] = preg_replace ( '[^0-9,]' , '' , $r [ 'exclude' ]);
// Allow plugins to filter an array of excluded pages
$r [ 'exclude' ] = implode ( ',' , apply_filters ( 'wp_list_pages_excludes' , explode ( ',' , $r [ 'exclude' ])));
2004-12-30 14:41:14 -05:00
// Query pages.
2007-12-17 01:53:59 -05:00
$r [ 'hierarchical' ] = 0 ;
2006-03-02 00:47:59 -05:00
$pages = get_pages ( $r );
2005-10-18 18:42:02 -04:00
2006-02-27 22:57:08 -05:00
if ( ! empty ( $pages ) ) {
2005-10-18 18:42:02 -04:00
if ( $r [ 'title_li' ] )
$output .= '<li class="pagenav">' . $r [ 'title_li' ] . '<ul>' ;
2006-02-27 22:57:08 -05:00
global $wp_query ;
2008-02-27 17:38:02 -05:00
if ( is_page () || $wp_query -> is_posts_page )
2007-02-02 11:38:26 -05:00
$current_page = $wp_query -> get_queried_object_id ();
2007-01-11 22:54:22 -05:00
$output .= walk_page_tree ( $pages , $r [ 'depth' ], $current_page , $r );
2004-12-30 14:41:14 -05:00
2005-10-18 18:42:02 -04:00
if ( $r [ 'title_li' ] )
$output .= '</ul></li>' ;
2004-12-16 03:02:53 -05:00
}
2005-10-18 18:42:02 -04:00
2005-05-04 16:57:12 -04:00
$output = apply_filters ( 'wp_list_pages' , $output );
2005-10-18 18:42:02 -04:00
2005-04-20 20:49:15 -04:00
if ( $r [ 'echo' ] )
echo $output ;
2005-10-18 18:42:02 -04:00
else
2005-04-20 20:49:15 -04:00
return $output ;
2004-12-16 03:02:53 -05:00
}
2006-06-07 19:17:59 -04:00
//
// Page helpers
//
function walk_page_tree () {
$walker = new Walker_Page ;
$args = func_get_args ();
return call_user_func_array ( array ( & $walker , 'walk' ), $args );
}
function walk_page_dropdown_tree () {
$walker = new Walker_PageDropdown ;
$args = func_get_args ();
return call_user_func_array ( array ( & $walker , 'walk' ), $args );
}
//
// Attachments
//
2008-03-03 23:21:37 -05:00
function the_attachment_link ( $id = 0 , $fullsize = false , $deprecated = false , $permalink = false ) {
if ( $fullsize )
echo wp_get_attachment_link ( $id , 'full' , $permalink );
else
echo wp_get_attachment_link ( $id , 'thumbnail' , $permalink );
}
// get an attachment page link using an image or icon if possible
2008-03-12 04:10:00 -04:00
function wp_get_attachment_link ( $id = 0 , $size = 'thumbnail' , $permalink = false , $icon = false ) {
2008-04-20 02:45:13 -04:00
$id = intval ( $id );
$_post = & get_post ( $id );
2008-03-03 23:21:37 -05:00
if ( ( 'attachment' != $_post -> post_type ) || ! $url = wp_get_attachment_url ( $_post -> ID ) )
return __ ( 'Missing Attachment' );
if ( $permalink )
$url = get_attachment_link ( $_post -> ID );
$post_title = attribute_escape ( $_post -> post_title );
2008-03-12 04:10:00 -04:00
$link_text = wp_get_attachment_image ( $id , $size , $icon );
2008-03-03 23:21:37 -05:00
if ( ! $link_text )
$link_text = $_post -> post_title ;
return " <a href=' $url ' title=' $post_title '> $link_text </a> " ;
2005-12-13 14:19:56 -05:00
}
2005-10-20 16:48:32 -04:00
2008-03-03 23:21:37 -05:00
// deprecated - use wp_get_attachment_link()
2008-02-16 16:54:47 -05:00
function get_the_attachment_link ( $id = 0 , $fullsize = false , $max_dims = false , $permalink = false ) {
2005-12-13 14:19:56 -05:00
$id = ( int ) $id ;
$_post = & get_post ( $id );
2007-04-06 19:42:38 -04:00
if ( ( 'attachment' != $_post -> post_type ) || ! $url = wp_get_attachment_url ( $_post -> ID ) )
2005-12-13 14:19:56 -05:00
return __ ( 'Missing Attachment' );
2008-02-16 16:54:47 -05:00
if ( $permalink )
$url = get_attachment_link ( $_post -> ID );
2006-12-21 05:45:58 -05:00
$post_title = attribute_escape ( $_post -> post_title );
2006-10-17 14:24:36 -04:00
2007-01-02 14:28:30 -05:00
$innerHTML = get_attachment_innerHTML ( $_post -> ID , $fullsize , $max_dims );
return " <a href=' $url ' title=' $post_title '> $innerHTML </a> " ;
2005-12-13 14:19:56 -05:00
}
2008-03-03 23:21:37 -05:00
// deprecated: use wp_get_attachment_image_src()
2007-01-02 14:28:30 -05:00
function get_attachment_icon_src ( $id = 0 , $fullsize = false ) {
2005-12-13 14:19:56 -05:00
$id = ( int ) $id ;
2007-01-02 14:28:30 -05:00
if ( ! $post = & get_post ( $id ) )
return false ;
2005-12-13 14:19:56 -05:00
2006-12-05 17:37:19 -05:00
$file = get_attached_file ( $post -> ID );
2005-12-13 14:19:56 -05:00
2008-03-02 23:17:37 -05:00
if ( ! $fullsize && $src = wp_get_attachment_thumb_url ( $post -> ID ) ) {
2005-12-13 14:19:56 -05:00
// We have a thumbnail desired, specified and existing
2008-03-02 23:17:37 -05:00
$src_file = basename ( $src );
2005-12-13 14:19:56 -05:00
$class = 'attachmentthumb' ;
2007-01-02 14:28:30 -05:00
} elseif ( wp_attachment_is_image ( $post -> ID ) ) {
2005-12-13 14:19:56 -05:00
// We have an image without a thumbnail
2007-01-02 14:28:30 -05:00
$src = wp_get_attachment_url ( $post -> ID );
2005-12-13 14:19:56 -05:00
$src_file = & $file ;
$class = 'attachmentimage' ;
2007-01-02 14:28:30 -05:00
} elseif ( $src = wp_mime_type_icon ( $post -> ID ) ) {
2005-12-13 14:19:56 -05:00
// No thumb, no image. We'll look for a mime-related icon instead.
2007-01-02 14:28:30 -05:00
$icon_dir = apply_filters ( 'icon_dir' , get_template_directory () . '/images' );
$src_file = $icon_dir . '/' . basename ( $src );
2005-12-13 14:19:56 -05:00
}
2007-01-16 13:10:54 -05:00
if ( ! isset ( $src ) || ! $src )
2007-01-02 14:28:30 -05:00
return false ;
2007-01-16 13:10:54 -05:00
2007-01-02 14:28:30 -05:00
return array ( $src , $src_file );
}
2008-03-03 23:21:37 -05:00
// deprecated: use wp_get_attachment_image()
2007-01-02 14:28:30 -05:00
function get_attachment_icon ( $id = 0 , $fullsize = false , $max_dims = false ) {
$id = ( int ) $id ;
if ( ! $post = & get_post ( $id ) )
2005-12-13 14:19:56 -05:00
return false ;
2008-03-03 23:21:37 -05:00
2007-01-05 15:54:55 -05:00
if ( ! $src = get_attachment_icon_src ( $post -> ID , $fullsize ) )
2007-01-02 14:28:30 -05:00
return false ;
list ( $src , $src_file ) = $src ;
2005-12-13 14:19:56 -05:00
// Do we need to constrain the image?
if ( ( $max_dims = apply_filters ( 'attachment_max_dims' , $max_dims )) && file_exists ( $src_file ) ) {
$imagesize = getimagesize ( $src_file );
if (( $imagesize [ 0 ] > $max_dims [ 0 ]) || $imagesize [ 1 ] > $max_dims [ 1 ] ) {
$actual_aspect = $imagesize [ 0 ] / $imagesize [ 1 ];
$desired_aspect = $max_dims [ 0 ] / $max_dims [ 1 ];
if ( $actual_aspect >= $desired_aspect ) {
$height = $actual_aspect * $max_dims [ 0 ];
2006-10-17 14:24:36 -04:00
$constraint = " width=' { $max_dims [ 0 ] } ' " ;
2005-12-13 14:19:56 -05:00
$post -> iconsize = array ( $max_dims [ 0 ], $height );
} else {
$width = $max_dims [ 1 ] / $actual_aspect ;
2006-10-17 14:24:36 -04:00
$constraint = " height=' { $max_dims [ 1 ] } ' " ;
2005-12-13 14:19:56 -05:00
$post -> iconsize = array ( $width , $max_dims [ 1 ]);
}
} else {
$post -> iconsize = array ( $imagesize [ 0 ], $imagesize [ 1 ]);
2007-10-07 03:35:20 -04:00
$constraint = '' ;
2005-12-13 14:19:56 -05:00
}
2008-01-10 15:51:07 -05:00
} else {
$constraint = '' ;
2005-12-13 14:19:56 -05:00
}
2006-12-21 05:45:58 -05:00
$post_title = attribute_escape ( $post -> post_title );
2006-10-17 14:24:36 -04:00
$icon = " <img src=' $src ' title=' $post_title ' alt=' $post_title ' $constraint /> " ;
2005-10-20 16:48:32 -04:00
2007-01-02 14:28:30 -05:00
return apply_filters ( 'attachment_icon' , $icon , $post -> ID );
2005-12-13 14:19:56 -05:00
}
2008-03-03 23:21:37 -05:00
// deprecated: use wp_get_attachment_image()
2005-12-13 14:19:56 -05:00
function get_attachment_innerHTML ( $id = 0 , $fullsize = false , $max_dims = false ) {
$id = ( int ) $id ;
2007-01-05 15:54:55 -05:00
if ( ! $post = & get_post ( $id ) )
return false ;
2005-12-13 14:19:56 -05:00
2007-01-05 15:54:55 -05:00
if ( $innerHTML = get_attachment_icon ( $post -> ID , $fullsize , $max_dims ))
2005-12-13 14:19:56 -05:00
return $innerHTML ;
2006-12-21 05:45:58 -05:00
$innerHTML = attribute_escape ( $post -> post_title );
2005-12-13 14:19:56 -05:00
return apply_filters ( 'attachment_innerHTML' , $innerHTML , $post -> ID );
}
function prepend_attachment ( $content ) {
2008-03-23 13:02:11 -04:00
global $post ;
if ( empty ( $post -> post_type ) || $post -> post_type != 'attachment' )
2008-03-23 14:19:03 -04:00
return $content ;
2008-03-23 13:02:11 -04:00
2005-12-13 14:19:56 -05:00
$p = '<p class="attachment">' ;
2008-03-03 23:21:37 -05:00
// show the medium sized image representation of the attachment if available, and link to the raw file
$p .= wp_get_attachment_link ( 0 , 'medium' , false );
2005-10-20 16:48:32 -04:00
$p .= '</p>' ;
2005-12-13 14:19:56 -05:00
$p = apply_filters ( 'prepend_attachment' , $p );
2005-10-20 16:48:32 -04:00
return " $p\n $content " ;
}
2005-12-13 14:19:56 -05:00
2006-06-07 19:17:59 -04:00
//
// Misc
//
function get_the_password_form () {
2008-01-31 16:47:35 -05:00
global $post ;
$label = 'pwbox-' . ( empty ( $post -> ID ) ? rand () : $post -> ID );
2006-08-30 17:46:31 -04:00
$output = '<form action="' . get_option ( 'siteurl' ) . ' / wp - pass . php " method= " post " >
2006-06-07 19:17:59 -04:00
< p > ' . __("This post is password protected. To view it please enter your password below:") . ' </ p >
2008-01-31 16:47:35 -05:00
< p >< label for = " ' . $label . ' " > ' . __("Password:") . ' < input name = " post_password " id = " ' . $label . ' " type = " password " size = " 20 " /></ label > < input type = " submit " name = " Submit " value = " ' . __( " Submit " ) . ' " /></ p >
2006-06-07 19:17:59 -04:00
</ form >
' ;
return $output ;
}
2007-10-12 16:01:16 -04:00
/**
* is_page_template () - Determine wether or not we are in a page template
*
* This template tag allows you to determine wether or not you are in a page template .
* You can optional provide a template name and then the check will be specific to
* that template .
*
* @ package Template Tags
* @ global object $wp_query
* @ param string $template The specific template name if specific matching is required
*/
function is_page_template ( $template = '' ) {
if ( ! is_page ()) {
return false ;
}
global $wp_query ;
$page = $wp_query -> get_queried_object ();
$custom_fields = get_post_custom_values ( '_wp_page_template' , $page -> ID );
$page_template = $custom_fields [ 0 ];
// We have no argument passed so just see if a page_template has been specified
if ( empty ( $template ) ) {
if ( ! empty ( $page_template ) ) {
return true ;
}
} elseif ( $template == $page_template ) {
return true ;
}
return false ;
}
2008-04-18 19:38:21 -04:00
/**
2008-05-08 13:25:07 -04:00
* wp_post_revision_title () - returns formatted datetimestamp of a revision ( linked to that revisions ' s page )
2008-04-18 19:38:21 -04:00
*
* @ package WordPress
* @ subpackage Post Revisions
* @ since 2.6
*
* @ uses date_i18n ()
*
* @ param int | object $revision revision ID or revision object
2008-05-08 13:25:07 -04:00
* @ param bool $link optional Link to revisions ' s page ?
2008-04-18 19:38:21 -04:00
* @ return string i18n formatted datetimestamp or localized 'Corrent Revision'
*/
2008-05-08 13:25:07 -04:00
function wp_post_revision_title ( $revision , $link = true ) {
if ( ! $revision = get_post ( $revision ) )
2008-04-18 19:38:21 -04:00
return $revision ;
2008-05-08 13:25:07 -04:00
if ( ! in_array ( $revision -> post_type , array ( 'post' , 'page' , 'revision' ) ) )
return false ;
$datef = _c ( 'j F, Y @ G:i|revision date format' );
$autosavef = __ ( '%s [Autosave]' );
$currentf = __ ( '%s [Current Revision]' );
$date = date_i18n ( $datef , strtotime ( $revision -> post_modified_gmt . ' +0000' ) );
if ( $link && current_user_can ( 'edit_post' , $revision -> ID ) && $link = get_edit_post_link ( $revision -> ID ) )
$date = " <a href=' $link '> $date </a> " ;
2008-05-29 18:21:36 -04:00
if ( ! wp_is_post_revision ( $revision ) )
2008-05-08 13:25:07 -04:00
$date = sprintf ( $currentf , $date );
2008-05-29 18:21:36 -04:00
elseif ( wp_is_post_autosave ( $revision ) )
2008-05-08 13:25:07 -04:00
$date = sprintf ( $autosavef , $date );
return $date ;
2008-04-18 19:38:21 -04:00
}
/**
* wp_list_post_revisions () - echoes list of a post ' s revisions
*
* Can output either a UL with edit links or a TABLE with diff interface , and restore action links
*
* Second argument controls parameters :
* ( bool ) parent : include the parent ( the " Current Revision " ) in the list
* ( string ) format : 'list' or 'form-table' . 'list' outputs UL , 'form-table' outputs TABLE with UI
* ( int ) right : what revision is currently being viewed - used in form - table format
* ( int ) left : what revision is currently being diffed against right - used in form - table format
*
* @ package WordPress
* @ subpackage Post Revisions
* @ since 2.6
*
* @ uses wp_get_post_revisions ()
2008-05-08 13:25:07 -04:00
* @ uses wp_post_revision_title ()
2008-04-18 19:38:21 -04:00
* @ uses get_edit_post_link ()
* @ uses get_author_name ()
*
* @ param int | object $post_id post ID or post object
* @ param string | array $args see description @ see wp_parse_args ()
*/
function wp_list_post_revisions ( $post_id = 0 , $args = null ) { // TODO? split into two functions (list, form-table) ?
if ( ! $post = get_post ( $post_id ) )
return ;
2008-05-29 18:21:36 -04:00
$defaults = array ( 'parent' => false , 'right' => false , 'left' => false , 'format' => 'list' , 'type' => 'all' );
2008-04-18 19:38:21 -04:00
extract ( wp_parse_args ( $args , $defaults ), EXTR_SKIP );
2008-05-29 18:21:36 -04:00
switch ( $type ) {
case 'autosave' :
if ( ! $autosave = wp_get_post_autosave ( $post -> ID ) )
return ;
$revisions = array ( $autosave );
break ;
case 'revision' : // just revisions - remove autosave later
case 'all' :
default :
if ( ! $revisions = wp_get_post_revisions ( $post -> ID ) )
return ;
break ;
}
2008-04-18 19:38:21 -04:00
$titlef = _c ( '%1$s by %2$s|post revision 1:datetime, 2:name' );
if ( $parent )
array_unshift ( $revisions , $post );
$rows = '' ;
$class = false ;
2008-05-09 11:59:17 -04:00
$can_edit_post = current_user_can ( 'edit_post' , $post -> ID );
2008-04-18 19:38:21 -04:00
foreach ( $revisions as $revision ) {
2008-05-09 11:59:17 -04:00
if ( ! current_user_can ( 'read_post' , $revision -> ID ) )
continue ;
2008-05-29 18:21:36 -04:00
if ( 'revision' === $type && wp_is_post_autosave ( $revision ) )
continue ;
2008-05-09 11:59:17 -04:00
2008-05-08 13:25:07 -04:00
$date = wp_post_revision_title ( $revision );
2008-04-18 19:38:21 -04:00
$name = get_author_name ( $revision -> post_author );
if ( 'form-table' == $format ) {
if ( $left )
2008-05-08 13:25:07 -04:00
$left_checked = $left == $revision -> ID ? ' checked="checked"' : '' ;
2008-04-18 19:38:21 -04:00
else
2008-05-08 13:25:07 -04:00
$left_checked = $right_checked ? ' checked="checked"' : '' ; // [sic] (the next one)
$right_checked = $right == $revision -> ID ? ' checked="checked"' : '' ;
2008-04-18 19:38:21 -04:00
$class = $class ? '' : " class='alternate' " ;
2008-05-09 11:59:17 -04:00
if ( $post -> ID != $revision -> ID && $can_edit_post )
2008-05-08 13:25:07 -04:00
$actions = '<a href="' . wp_nonce_url ( add_query_arg ( array ( 'revision' => $revision -> ID , 'diff' => false , 'action' => 'restore' ) ), " restore-post_ $post->ID | $revision->ID " ) . '">' . __ ( 'Restore' ) . '</a>' ;
2008-04-18 19:38:21 -04:00
else
$actions = '' ;
$rows .= " <tr $class > \n " ;
2008-05-29 19:16:11 -04:00
$rows .= " \t <th style='white-space: nowrap' scope='row'><input type='radio' name='left' value=' $revision->ID ' $left_checked /><input type='radio' name='right' value=' $revision->ID ' $right_checked /></th> \n " ;
2008-04-18 19:38:21 -04:00
$rows .= " \t <td> $date </td> \n " ;
$rows .= " \t <td> $name </td> \n " ;
$rows .= " \t <td class='action-links'> $actions </td> \n " ;
$rows .= " </tr> \n " ;
} else {
2008-05-08 13:25:07 -04:00
$title = sprintf ( $titlef , $date , $name );
$rows .= " \t <li> $title </li> \n " ;
2008-04-18 19:38:21 -04:00
}
}
if ( 'form-table' == $format ) : ?>
< form action = " revision.php " method = " get " >
< div class = " tablenav " >
< div class = " alignleft " >
< input type = " submit " class = " button-secondary " value = " <?php _e( 'Compare Revisions' ); ?> " />
2008-05-08 13:25:07 -04:00
< input type = " hidden " name = " action " value = " diff " />
2008-04-18 19:38:21 -04:00
</ div >
</ div >
< br class = " clear " />
< table class = " widefat post-revisions " >
< col />
< col style = " width: 33% " />
< col style = " width: 33% " />
< col style = " width: 33% " />
< thead >
2008-05-29 19:16:11 -04:00
< tr >
2008-04-18 19:38:21 -04:00
< th scope = " col " ></ th >
< th scope = " col " >< ? php _e ( 'Date Created' ); ?> </th>
< th scope = " col " >< ? php _e ( 'Author' ); ?> </th>
< th scope = " col " class = " action-links " >< ? php _e ( 'Actions' ); ?> </th>
2008-05-29 19:16:11 -04:00
</ tr >
2008-04-18 19:38:21 -04:00
</ thead >
< tbody >
< ? php echo $rows ; ?>
</ tbody >
</ table >
2008-05-29 19:16:11 -04:00
</ form >
2008-04-18 19:38:21 -04:00
< ? php
else :
echo " <ul class='post-revisions'> \n " ;
echo $rows ;
echo " </ul> " ;
endif ;
}