2004-01-27 10:58:01 +01:00
< ? php
function get_the_password_form () {
2005-10-19 00:42:02 +02:00
$output = '<form action="' . get_settings ( 'siteurl' ) . ' / wp - pass . php " method= " post " >
< p > ' . __("This post is password protected. To view it please enter your password below:") . ' </ p >
2006-01-15 23:04:21 +01:00
< p >< label > ' . __("Password:") . ' < input name = " post_password " type = " password " size = " 20 " /></ label > < input type = " submit " name = " Submit " value = " ' . __( " Submit " ) . ' " /></ p >
2005-10-19 00:42:02 +02:00
</ form >
' ;
2004-02-17 05:56:29 +01:00
return $output ;
2004-01-27 10:58:01 +01:00
}
2005-10-19 00:42:02 +02:00
2004-01-27 10:58:01 +01:00
function the_ID () {
2004-02-17 05:56:29 +01:00
global $id ;
echo $id ;
2004-01-27 10:58:01 +01:00
}
2006-03-17 02:16:22 +01:00
function get_the_ID () {
global $id ;
return $id ;
}
2005-10-19 00:42:02 +02:00
2004-01-27 10:58:01 +01:00
function the_title ( $before = '' , $after = '' , $echo = true ) {
2004-02-17 05:56:29 +01:00
$title = get_the_title ();
2005-04-21 02:55:30 +02:00
if ( strlen ( $title ) > 0 ) {
2005-02-06 04:40:08 +01:00
$title = apply_filters ( 'the_title' , $before . $title . $after , $before , $after );
2005-10-19 00:42:02 +02:00
if ( $echo )
2004-02-17 05:56:29 +01:00
echo $title ;
else
return $title ;
}
2004-01-27 10:58:01 +01:00
}
2004-02-17 05:56:29 +01:00
2005-10-19 00:42:02 +02:00
2004-12-19 01:10:10 +01:00
function get_the_title ( $id = 0 ) {
2005-03-27 22:45:01 +02:00
$post = & get_post ( $id );
$title = $post -> post_title ;
2005-10-19 00:42:02 +02:00
if ( ! empty ( $post -> post_password ) )
2005-03-27 22:45:01 +02:00
$title = sprintf ( __ ( 'Protected: %s' ), $title );
2004-12-19 01:10:10 +01:00
return $title ;
2004-01-27 10:58:01 +01:00
}
2005-10-19 00:42:02 +02:00
2005-01-07 23:01:59 +01:00
function get_the_guid ( $id = 0 ) {
2005-03-27 22:45:01 +02:00
$post = & get_post ( $id );
2005-10-19 00:42:02 +02:00
2005-03-27 22:45:01 +02:00
return apply_filters ( 'get_the_guid' , $post -> guid );
2005-01-07 23:01:59 +01:00
}
2005-10-19 00:42:02 +02:00
2005-01-07 23:01:59 +01:00
function the_guid ( $id = 0 ) {
2005-03-27 22:45:01 +02:00
echo get_the_guid ( $id );
2005-01-07 23:01:59 +01:00
}
2004-02-17 05:56:29 +01:00
function the_content ( $more_link_text = '(more...)' , $stripteaser = 0 , $more_file = '' ) {
2005-10-19 00:42:02 +02: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 10:58:01 +01:00
}
2005-10-19 00:42:02 +02:00
2004-02-17 05:56:29 +01:00
function get_the_content ( $more_link_text = '(more...)' , $stripteaser = 0 , $more_file = '' ) {
2005-10-19 00:42:02 +02:00
global $id , $post , $more , $single , $withcomments , $page , $pages , $multipage , $numpages ;
global $preview ;
global $pagenow ;
$output = '' ;
if ( ! empty ( $post -> post_password ) ) { // if there's a password
if ( stripslashes ( $_COOKIE [ 'wp-postpass_' . COOKIEHASH ]) != $post -> post_password ) { // and it doesn't match the cookie
$output = get_the_password_form ();
return $output ;
}
}
if ( $more_file != '' )
$file = $more_file ;
else
$file = $pagenow ; //$_SERVER['PHP_SELF'];
$content = $pages [ $page - 1 ];
$content = explode ( '<!--more-->' , $content , 2 );
if ( ( preg_match ( '/<!--noteaser-->/' , $post -> post_content ) && (( ! $multipage ) || ( $page == 1 ))) )
$stripteaser = 1 ;
$teaser = $content [ 0 ];
if ( ( $more ) && ( $stripteaser ) )
$teaser = '' ;
$output .= $teaser ;
if ( count ( $content ) > 1 ) {
if ( $more )
$output .= '<a id="more-' . $id . '"></a>' . $content [ 1 ];
else
$output .= ' <a href="' . get_permalink () . " #more- $id\ " > $more_link_text </ a > " ;
}
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 10:58:01 +01:00
}
2005-10-19 00:42:02 +02:00
2004-01-27 10:58:01 +01:00
function the_excerpt () {
2005-02-15 01:21:21 +01:00
echo apply_filters ( 'the_excerpt' , get_the_excerpt ());
2004-01-27 10:58:01 +01:00
}
2005-10-19 00:42:02 +02:00
2004-02-06 21:28:26 +01:00
function get_the_excerpt ( $fakeit = true ) {
2005-02-15 01:21:21 +01:00
global $id , $post ;
$output = '' ;
$output = $post -> post_excerpt ;
2005-10-19 00:42:02 +02:00
if ( ! empty ( $post -> post_password ) ) { // if there's a password
if ( $_COOKIE [ 'wp-postpass_' . COOKIEHASH ] != $post -> post_password ) { // and it doesn't match the cookie
2005-02-15 01:21:21 +01:00
$output = __ ( 'There is no excerpt because this is a protected post.' );
return $output ;
}
}
2004-02-22 15:39:04 +01:00
2005-02-15 01:21:21 +01:00
return apply_filters ( 'get_the_excerpt' , $output );
2004-01-27 10:58:01 +01:00
}
2005-10-19 00:42:02 +02:00
2004-04-24 21:23:57 +02:00
function wp_link_pages ( $args = '' ) {
parse_str ( $args , $r );
2005-10-19 00:42:02 +02:00
if ( ! isset ( $r [ 'before' ]) )
$r [ 'before' ] = '<p>' . __ ( 'Pages:' );
if ( ! isset ( $r [ 'after' ]) )
$r [ 'after' ] = '</p>' ;
if ( ! isset ( $r [ 'next_or_number' ]) )
$r [ 'next_or_number' ] = 'number' ;
if ( ! isset ( $r [ 'nextpagelink' ]) )
$r [ 'nextpagelink' ] = 'Next page' ;
if ( ! isset ( $r [ 'previouspagelink' ]) )
$r [ 'previouspagelink' ] = 'Previous page' ;
if ( ! isset ( $r [ 'pagelink' ]) )
$r [ 'pagelink' ] = '%' ;
if ( ! isset ( $r [ 'more_file' ]) )
$r [ 'more_file' ] = '' ;
2004-04-24 21:23:57 +02:00
link_pages ( $r [ 'before' ], $r [ 'after' ], $r [ 'next_or_number' ], $r [ 'nextpagelink' ], $r [ 'previouspagelink' ], $r [ 'pagelink' ], $r [ 'more_file' ]);
}
2004-01-27 10:58:01 +01:00
2005-10-19 00:42:02 +02:00
2004-01-27 10:58:01 +01:00
function link_pages ( $before = '<br />' , $after = '<br />' , $next_or_number = 'number' , $nextpagelink = 'next page' , $previouspagelink = 'previous page' , $pagelink = '%' , $more_file = '' ) {
2005-10-19 00:42:02 +02:00
global $id , $page , $numpages , $multipage , $more , $pagenow ;
if ( $more_file != '' )
$file = $more_file ;
else
$file = $pagenow ;
if ( $multipage ) {
if ( 'number' == $next_or_number ) {
echo $before ;
for ( $i = 1 ; $i < ( $numpages + 1 ); $i = $i + 1 ) {
$j = str_replace ( '%' , " $i " , $pagelink );
echo ' ' ;
if ( ( $i != $page ) || (( ! $more ) && ( $page == 1 )) ) {
if ( '' == get_settings ( 'permalink_structure' ) )
echo '<a href="' . get_permalink () . '&page=' . $i . '">' ;
else
echo '<a href="' . trailingslashit ( get_permalink () ) . $i . '/">' ;
}
echo $j ;
if ( ( $i != $page ) || (( ! $more ) && ( $page == 1 )) )
echo '</a>' ;
}
echo $after ;
} else {
if ( $more ) {
echo $before ;
$i = $page - 1 ;
if ( $i && $more ) {
if ( '' == get_settings ( 'permalink_structure' ) )
echo '<a href="' . get_permalink () . '&page=' . $i . '">' . $previouspagelink . '</a>' ;
else
echo '<a href="' . get_permalink () . $i . '/">' . $previouspagelink . '</a>' ;
}
$i = $page + 1 ;
if ( $i <= $numpages && $more ) {
if ( '' == get_settings ( 'permalink_structure' ) )
echo '<a href="' . get_permalink () . '&page=' . $i . '">' . $nextpagelink . '</a>' ;
else
echo '<a href="' . get_permalink () . $i . '/">' . $nextpagelink . '</a>' ;
}
echo $after ;
}
}
}
2004-01-27 10:58:01 +01:00
}
2005-10-19 00:42:02 +02:00
2004-02-26 22:42:47 +01:00
/*
2005-10-19 00:42:02 +02:00
Post - meta : Custom per - post fields .
*/
2005-02-12 09:58:10 +01:00
function get_post_custom ( $post_id = 0 ) {
global $id , $post_meta_cache , $wpdb ;
2006-01-25 08:38:43 +01:00
if ( ! $post_id )
$post_id = $id ;
if ( isset ( $post_meta_cache [ $post_id ]) )
return $post_meta_cache [ $post_id ];
if ( $meta_list = $wpdb -> get_results ( " SELECT post_id, meta_key, meta_value FROM $wpdb->postmeta WHERE post_id = ' $post_id ' ORDER BY post_id, meta_key " , ARRAY_A ) ) {
// Change from flat structure to hierarchical:
$post_meta_cache = array ();
foreach ( $meta_list as $metarow ) {
$mpid = $metarow [ 'post_id' ];
$mkey = $metarow [ 'meta_key' ];
$mval = $metarow [ 'meta_value' ];
// Force subkeys to be array type:
if ( ! isset ( $post_meta_cache [ $mpid ]) || ! is_array ( $post_meta_cache [ $mpid ]) )
$post_meta_cache [ $mpid ] = array ();
2006-02-12 08:53:23 +01:00
2006-01-25 08:38:43 +01:00
if ( ! isset ( $post_meta_cache [ $mpid ][ " $mkey " ]) || ! is_array ( $post_meta_cache [ $mpid ][ " $mkey " ]) )
$post_meta_cache [ $mpid ][ " $mkey " ] = array ();
// Add a value to the current pid/key:
$post_meta_cache [ $mpid ][ $mkey ][] = $mval ;
2005-02-12 09:58:10 +01:00
}
2006-01-25 08:38:43 +01:00
return $post_meta_cache [ $mpid ];
2005-02-12 09:58:10 +01:00
}
2004-02-26 22:42:47 +01:00
}
2005-10-19 00:42:02 +02:00
2004-02-26 22:42:47 +01:00
function get_post_custom_keys () {
2006-01-25 08:38:43 +01:00
$custom = get_post_custom ();
2005-10-19 00:42:02 +02:00
2006-01-25 08:38:43 +01:00
if ( ! is_array ( $custom ) )
2004-02-26 22:42:47 +01:00
return ;
2006-01-25 08:38:43 +01:00
if ( $keys = array_keys ( $custom ) )
2004-02-26 22:42:47 +01:00
return $keys ;
}
2005-10-19 00:42:02 +02:00
2006-01-17 02:01:17 +01:00
function get_post_custom_values ( $key = '' ) {
2006-01-25 08:38:43 +01:00
$custom = get_post_custom ();
2004-02-26 22:42:47 +01:00
2006-01-25 08:38:43 +01:00
return $custom [ $key ];
2004-02-26 22:42:47 +01:00
}
2005-10-19 00:42:02 +02:00
2005-02-02 23:52:47 +01:00
function post_custom ( $key = '' ) {
2006-01-25 08:38:43 +01:00
$custom = get_post_custom ();
2005-10-19 00:42:02 +02:00
2006-01-25 08:38:43 +01:00
if ( 1 == count ( $custom [ $key ]) )
return $custom [ $key ][ 0 ];
2005-10-19 00:42:02 +02:00
else
2006-01-25 08:38:43 +01:00
return $custom [ $key ];
2005-02-02 23:52:47 +01:00
}
2005-10-19 00:42:02 +02:00
2004-02-26 22:42:47 +01:00
// this will probably change at some point...
function the_meta () {
global $id , $post_meta_cache ;
2005-10-19 00:42:02 +02:00
if ( $keys = get_post_custom_keys () ) {
2004-03-29 20:46:33 +02:00
echo " <ul class='post-meta'> \n " ;
2005-10-19 00:42:02 +02:00
foreach ( $keys as $key ) {
2006-02-20 18:13:06 +01:00
$keyt = trim ( $key );
if ( '_' == $keyt { 0 } )
continue ;
2006-01-25 08:38:43 +01:00
$values = array_map ( 'trim' , get_post_custom_values ( $key ));
2004-02-26 23:22:54 +01:00
$value = implode ( $values , ', ' );
2004-03-29 20:46:33 +02:00
echo " <li><span class='post-meta-key'> $key :</span> $value </li> \n " ;
2004-02-26 22:42:47 +01:00
}
echo " </ul> \n " ;
}
}
2004-10-09 04:03:37 +02:00
2005-10-19 00:42:02 +02:00
/*
Pages
*/
2004-10-09 04:03:37 +02:00
2005-03-29 03:04:16 +02:00
function & get_page_children ( $page_id , $pages ) {
2005-03-28 00:17:23 +02:00
global $page_cache ;
if ( empty ( $pages ) )
$pages = & $page_cache ;
$page_list = array ();
2005-10-19 00:42:02 +02:00
foreach ( $pages as $page ) {
if ( $page -> post_parent == $page_id ) {
2005-03-28 00:17:23 +02:00
$page_list [] = $page ;
2005-10-19 00:42:02 +02:00
if ( $children = get_page_children ( $page -> ID , $pages ) )
2005-03-28 00:17:23 +02:00
$page_list = array_merge ( $page_list , $children );
}
}
return $page_list ;
}
2005-10-19 00:42:02 +02:00
2005-03-27 22:45:01 +02:00
function & get_pages ( $args = '' ) {
2005-03-28 00:17:23 +02:00
global $wpdb ;
2006-03-02 06:47:59 +01:00
if ( is_array ( $args ) )
$r = & $args ;
else
parse_str ( $args , $r );
2005-02-16 16:12:04 +01:00
2006-03-02 07:37:00 +01:00
$defaults = array ( 'child_of' => 0 , 'sort_order' => 'ASC' , 'sort_column' => 'post_title' ,
2006-03-21 23:46:38 +01:00
'hierarchical' => 1 , 'exclude' => '' , 'include' => '' , 'meta_key' => '' , 'meta_value' => '' );
2006-03-02 07:37:00 +01:00
$r = array_merge ( $defaults , $r );
2006-03-21 05:26:50 +01:00
extract ( $r );
$inclusions = '' ;
if ( ! empty ( $include ) ) {
2006-03-21 23:46:38 +01:00
$child_of = 0 ; //ignore child_of, exclude, meta_key, and meta_value params if using include
2006-03-21 05:26:50 +01:00
$exclude = '' ;
2006-03-21 23:46:38 +01:00
$meta_key = '' ;
$meta_value = '' ;
2006-03-21 05:26:50 +01:00
$incpages = preg_split ( '/[\s,]+/' , $include );
if ( count ( $incpages ) ) {
foreach ( $incpages as $incpage ) {
if ( empty ( $inclusions ))
$inclusions = ' AND ( ID = ' . intval ( $incpage ) . ' ' ;
else
$inclusions .= ' OR ID = ' . intval ( $incpage ) . ' ' ;
}
}
}
if ( ! empty ( $inclusions ))
$inclusions .= ')' ;
2005-03-09 04:16:30 +01:00
$exclusions = '' ;
2006-03-21 05:26:50 +01:00
if ( ! empty ( $exclude ) ) {
$expages = preg_split ( '/[\s,]+/' , $exclude );
2005-10-19 00:42:02 +02:00
if ( count ( $expages ) ) {
foreach ( $expages as $expage ) {
2006-03-21 05:26:50 +01:00
if ( empty ( $exclusions ))
$exclusions = ' AND ( ID <> ' . intval ( $expage ) . ' ' ;
else
$exclusions .= ' AND ID <> ' . intval ( $expage ) . ' ' ;
2004-12-16 09:02:53 +01:00
}
}
2005-03-09 04:16:30 +01:00
}
2006-03-21 05:26:50 +01:00
if ( ! empty ( $exclusions ))
$exclusions .= ')' ;
2004-10-09 04:03:37 +02:00
2006-03-21 23:46:38 +01:00
$query = " SELECT * FROM $wpdb->posts " ;
$query .= ( empty ( $meta_key ) ? " " : " , $wpdb->postmeta " ) ;
$query .= " WHERE (post_type = 'page' AND post_status = 'publish') $exclusions $inclusions " ;
$query .= ( empty ( $meta_key ) | empty ( $meta_value ) ? " " : " AND ( $wpdb->posts .ID = $wpdb->postmeta .post_id AND $wpdb->postmeta .meta_key = ' $meta_key ' AND $wpdb->postmeta .meta_value = ' $meta_value ' ) " ) ;
$query .= " ORDER BY " . $sort_column . " " . $sort_order ;
$pages = $wpdb -> get_results ( $query );
2006-04-04 04:02:12 +02:00
$pages = apply_filters ( 'get_pages' , $pages , $r );
2005-03-09 04:16:30 +01:00
if ( empty ( $pages ) )
2005-03-27 23:56:10 +02:00
return array ();
// Update cache.
update_page_cache ( $pages );
2005-03-09 04:16:30 +01:00
2006-03-21 05:26:50 +01:00
if ( $child_of || $hierarchical )
$pages = & get_page_children ( $child_of , $pages );
2005-03-28 00:17:23 +02:00
2005-03-09 04:16:30 +01:00
return $pages ;
2004-12-30 20:41:14 +01:00
}
2006-02-28 04:57:08 +01:00
function wp_dropdown_pages ( $args = '' ) {
2006-03-02 06:47:59 +01:00
if ( is_array ( $args ) )
$r = & $args ;
else
parse_str ( $args , $r );
2006-03-02 07:37:00 +01:00
$defaults = array ( 'depth' => 0 , 'child_of' => 0 , 'selected' => 0 , 'echo' => 1 ,
'name' => 'page_id' );
$r = array_merge ( $defaults , $r );
2006-02-28 04:57:08 +01:00
extract ( $r );
2006-03-02 06:47:59 +01:00
$pages = get_pages ( $r );
2006-02-28 04:57:08 +01:00
$output = '' ;
if ( ! empty ( $pages ) ) {
2006-02-28 07:11:59 +01:00
$output = " <select name=' $name '> \n " ;
2006-02-28 04:57:08 +01:00
$output .= walk_page_tree ( $pages , $depth , '_page_dropdown_element' , '' , '' , '' , $selected );
$output .= " </select> \n " ;
}
$output = apply_filters ( 'wp_dropdown_pages' , $output );
if ( $echo )
echo $output ;
return $output ;
}
function _page_dropdown_element ( $output , $page , $depth , $selected ) {
$pad = str_repeat ( ' ' , $depth * 3 );
$output .= " \t <option value= \" $page->ID\ " " ;
if ( $page -> ID == $selected )
$output .= ' selected="selected"' ;
$output .= '>' ;
$title = wp_specialchars ( $page -> post_title );
$output .= " $pad $title " ;
$output .= " </option> \n " ;
return $output ;
}
2005-10-19 00:42:02 +02:00
2004-12-30 20:41:14 +01:00
function wp_list_pages ( $args = '' ) {
2006-03-02 06:47:59 +01:00
if ( is_array ( $args ) )
$r = & $args ;
else
parse_str ( $args , $r );
2006-03-02 07:37:00 +01:00
$defaults = array ( 'depth' => 0 , 'show_date' => '' , 'date_format' => get_settings ( 'date_format' ),
'child_of' => 0 , 'title_li' => __ ( 'Pages' ), 'echo' => 1 );
$r = array_merge ( $defaults , $r );
2005-10-19 00:42:02 +02:00
2005-04-21 02:49:15 +02:00
$output = '' ;
2004-12-30 20:41:14 +01:00
// Query pages.
2006-03-02 06:47:59 +01:00
$pages = get_pages ( $r );
2005-10-19 00:42:02 +02:00
2006-02-28 04:57:08 +01:00
if ( ! empty ( $pages ) ) {
2005-10-19 00:42:02 +02:00
if ( $r [ 'title_li' ] )
$output .= '<li class="pagenav">' . $r [ 'title_li' ] . '<ul>' ;
2006-02-28 04:57:08 +01:00
global $wp_query ;
$current_page = $wp_query -> get_queried_object_id ();
2006-04-10 00:08:18 +02:00
$output .= walk_page_tree ( $pages , $r [ 'depth' ], '_page_list_element_start' , '_page_list_element_end' , '_page_list_level_start' , '_page_list_level_end' , $current_page , $r [ 'show_date' ], $r [ 'date_format' ]);
2004-12-30 20:41:14 +01:00
2005-10-19 00:42:02 +02:00
if ( $r [ 'title_li' ] )
$output .= '</ul></li>' ;
2004-12-16 09:02:53 +01:00
}
2005-10-19 00:42:02 +02:00
2005-05-04 22:57:12 +02:00
$output = apply_filters ( 'wp_list_pages' , $output );
2005-10-19 00:42:02 +02:00
2005-04-21 02:49:15 +02:00
if ( $r [ 'echo' ] )
echo $output ;
2005-10-19 00:42:02 +02:00
else
2005-04-21 02:49:15 +02:00
return $output ;
2004-12-16 09:02:53 +01:00
}
2006-02-28 04:57:08 +01:00
function _page_list_level_start ( $output , $depth ) {
$indent = str_repeat ( " \t " , $depth );
$output .= " $indent <ul> \n " ;
return $output ;
}
2005-10-19 00:42:02 +02:00
2006-02-28 04:57:08 +01:00
function _page_list_level_end ( $output , $depth ) {
$indent = str_repeat ( " \t " , $depth );
$output .= " $indent </ul> \n " ;
return $output ;
}
2005-04-21 02:49:15 +02:00
2006-02-28 04:57:08 +01:00
function _page_list_element_start ( $output , $page , $depth , $current_page , $show_date , $date_format ) {
2005-10-19 00:42:02 +02:00
if ( $depth )
2005-01-15 16:51:31 +01:00
$indent = str_repeat ( " \t " , $depth );
2004-12-16 09:02:53 +01:00
2006-02-28 04:57:08 +01:00
$css_class = 'page_item' ;
if ( $page -> ID == $current_page )
$css_class .= ' current_page_item' ;
2005-11-28 07:38:12 +01:00
2006-02-28 04:57:08 +01:00
$output .= $indent . '<li class="' . $css_class . '"><a href="' . get_page_link ( $page -> ID ) . '" title="' . wp_specialchars ( $page -> post_title ) . '">' . $page -> post_title . '</a>' ;
2004-12-30 20:41:14 +01:00
2006-02-28 04:57:08 +01:00
if ( ! empty ( $show_date ) ) {
if ( 'modified' == $show_date )
$time = $page -> post_modified ;
else
$time = $page -> post_date ;
2004-12-30 20:41:14 +01:00
2006-02-28 04:57:08 +01:00
$output .= " " . mysql2date ( $date_format , $time );
}
2004-12-30 20:41:14 +01:00
2006-02-28 04:57:08 +01:00
return $output ;
}
2004-12-16 09:02:53 +01:00
2006-02-28 04:57:08 +01:00
function _page_list_element_end ( $output , $page , $depth ) {
$output .= " </li> \n " ;
2004-10-09 04:03:37 +02:00
2006-02-28 04:57:08 +01:00
return $output ;
2004-10-09 04:03:37 +02:00
}
2005-12-13 20:19:56 +01:00
function the_attachment_link ( $id = 0 , $fullsize = false , $max_dims = false ) {
echo get_the_attachment_link ( $id , $fullsize , $max_dims );
}
2005-10-20 22:48:32 +02:00
2005-12-13 20:19:56 +01:00
function get_the_attachment_link ( $id = 0 , $fullsize = false , $max_dims = false ) {
$id = ( int ) $id ;
$_post = & get_post ( $id );
2006-02-09 11:03:48 +01:00
if ( ( 'attachment' != $_post -> post_type ) || ( '' == $_post -> guid ) )
2005-12-13 20:19:56 +01:00
return __ ( 'Missing Attachment' );
if ( ! empty ( $_post -> guid ) ) {
$innerHTML = get_attachment_innerHTML ( $_post -> ID , $fullsize , $max_dims );
return " <a href= \" { $_post -> guid } \" title= \" { $_post -> post_title } \" > { $innerHTML } </a> " ;
2005-10-20 22:48:32 +02:00
} else {
$p .= __ ( 'Missing attachment' );
}
2005-12-13 20:19:56 +01:00
return $p ;
}
function get_attachment_icon ( $id = 0 , $fullsize = false , $max_dims = false ) {
$id = ( int ) $id ;
$post = & get_post ( $id );
$mime = $post -> post_mime_type ;
$imagedata = get_post_meta ( $post -> ID , '_wp_attachment_metadata' , true );
$file = get_post_meta ( $post -> ID , '_wp_attached_file' , true );
if ( ! $fullsize && ! empty ( $imagedata [ 'thumb' ])
&& ( $thumbfile = str_replace ( basename ( $file ), $imagedata [ 'thumb' ], $file ))
&& file_exists ( $thumbfile ) ) {
// We have a thumbnail desired, specified and existing
$src = str_replace ( basename ( $post -> guid ), $imagedata [ 'thumb' ], $post -> guid );
$src_file = $thumbfile ;
$class = 'attachmentthumb' ;
} elseif ( substr ( $mime , 0 , 6 ) == 'image/'
&& file_exists ( $file ) ) {
// We have an image without a thumbnail
$src = $post -> guid ;
$src_file = & $file ;
$class = 'attachmentimage' ;
} elseif ( ! empty ( $mime ) ) {
// No thumb, no image. We'll look for a mime-related icon instead.
$icon_dir = apply_filters ( 'icon_dir' , get_template_directory () . '/images' );
$icon_dir_uri = apply_filters ( 'icon_dir_uri' , get_template_directory_uri () . '/images' );
$types = array ( substr ( $mime , 0 , strpos ( $mime , '/' )), substr ( $mime , strpos ( $mime , '/' ) + 1 ), str_replace ( '/' , '_' , $mime ));
$exts = array ( 'jpg' , 'gif' , 'png' );
foreach ( $types as $type ) {
foreach ( $exts as $ext ) {
$src_file = " $icon_dir / $type . $ext " ;
if ( file_exists ( $src_file ) ) {
$src = " $icon_dir_uri / $type . $ext " ;
break 2 ;
}
}
}
}
if ( ! isset ( $src ) )
return false ;
// 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 ];
$constraint = " width= \" { $max_dims [ 0 ] } \" " ;
$post -> iconsize = array ( $max_dims [ 0 ], $height );
} else {
$width = $max_dims [ 1 ] / $actual_aspect ;
$constraint = " height= \" { $max_dims [ 1 ] } \" " ;
$post -> iconsize = array ( $width , $max_dims [ 1 ]);
}
} else {
$post -> iconsize = array ( $imagesize [ 0 ], $imagesize [ 1 ]);
}
}
2005-12-19 20:10:09 +01:00
$icon = " <img src= \" { $src } \" title= \" { $post -> post_title } \" alt= \" { $post -> post_title } \" { $constraint } /> " ;
2005-10-20 22:48:32 +02:00
2005-12-13 20:19:56 +01:00
return apply_filters ( 'attachment_icon' , $icon , $post -> ID );
}
function get_attachment_innerHTML ( $id = 0 , $fullsize = false , $max_dims = false ) {
$id = ( int ) $id ;
if ( $innerHTML = get_attachment_icon ( $id , $fullsize , $max_dims ))
return $innerHTML ;
$post = & get_post ( $id );
$innerHTML = $post -> post_title ;
return apply_filters ( 'attachment_innerHTML' , $innerHTML , $post -> ID );
}
function prepend_attachment ( $content ) {
$p = '<p class="attachment">' ;
$p .= get_the_attachment_link ( false , true , array ( 400 , 300 ));
2005-10-20 22:48:32 +02:00
$p .= '</p>' ;
2005-12-13 20:19:56 +01:00
$p = apply_filters ( 'prepend_attachment' , $p );
2005-10-20 22:48:32 +02:00
return " $p\n $content " ;
}
2005-12-13 20:19:56 +01:00
2005-10-20 22:48:32 +02:00
?>