2004-01-27 10:58:01 +01:00
< ? php
function get_the_password_form () {
2004-02-20 02:53:41 +01:00
$output = '<form action="' . get_settings ( 'siteurl' ) . ' / wp - pass . php " method= " post " >
2004-04-17 17:56:23 +02:00
< p > ' . __("This post is password protected. To view it please enter your password below:") . ' </ p >
2005-03-02 18:56:21 +01:00
< p >< label > ' . __("Password:") . ' < input name = " post_password " type = " password " size = " 20 " /></ label > < input type = " submit " name = " Submit " value = " Submit " /></ p >
2004-01-27 10:58:01 +01:00
</ form >
2004-02-20 02:53:41 +01:00
' ;
2004-02-17 05:56:29 +01:00
return $output ;
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
}
function the_title ( $before = '' , $after = '' , $echo = true ) {
2004-02-17 05:56:29 +01:00
$title = get_the_title ();
if ( ! empty ( $title )) {
2005-02-06 04:40:08 +01:00
$title = apply_filters ( 'the_title' , $before . $title . $after , $before , $after );
2004-02-17 05:56:29 +01:00
if ( $echo )
echo $title ;
else
return $title ;
}
2004-01-27 10:58:01 +01:00
}
2004-02-17 05:56:29 +01: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 ;
if ( ! empty ( $post -> post_password ))
$title = sprintf ( __ ( 'Protected: %s' ), $title );
2004-12-19 01:10:10 +01:00
return $title ;
2004-01-27 10:58:01 +01: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 );
return apply_filters ( 'get_the_guid' , $post -> guid );
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 = '' ) {
2004-01-27 10:58:01 +01:00
$content = get_the_content ( $more_link_text , $stripteaser , $more_file );
$content = apply_filters ( 'the_content' , $content );
2004-03-31 18:41:30 +02:00
$content = str_replace ( ']]>' , ']]>' , $content );
2004-01-27 10:58:01 +01:00
echo $content ;
}
2004-02-17 05:56:29 +01:00
function get_the_content ( $more_link_text = '(more...)' , $stripteaser = 0 , $more_file = '' ) {
2004-01-29 07:49:19 +01:00
global $id , $post , $more , $single , $withcomments , $page , $pages , $multipage , $numpages ;
2004-10-10 20:02:30 +02:00
global $preview ;
2004-01-27 10:58:01 +01:00
global $pagenow ;
$output = '' ;
if ( ! empty ( $post -> post_password )) { // if there's a password
2004-10-10 20:02:30 +02:00
if ( stripslashes ( $_COOKIE [ 'wp-postpass_' . COOKIEHASH ]) != $post -> post_password ) { // and it doesn't match the cookie
2004-01-27 10:58:01 +01:00
$output = get_the_password_form ();
return $output ;
}
}
if ( $more_file != '' ) {
$file = $more_file ;
} else {
2004-04-21 00:56:47 +02:00
$file = $pagenow ; //$_SERVER['PHP_SELF'];
2004-01-27 10:58:01 +01:00
}
$content = $pages [ $page - 1 ];
2004-08-08 22:22:29 +02:00
$content = explode ( '<!--more-->' , $content , 2 );
2004-01-27 10:58:01 +01:00
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 {
2004-02-20 02:53:41 +01:00
$output .= ' <a href="' . get_permalink () . " #more- $id\ " > $more_link_text </ a > " ;
2004-01-27 10:58:01 +01: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 ;
}
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
}
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 ;
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
$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
}
2004-04-24 21:23:57 +02:00
function wp_link_pages ( $args = '' ) {
parse_str ( $args , $r );
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' ] = '' ;
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
function link_pages ( $before = '<br />' , $after = '<br />' , $next_or_number = 'number' , $nextpagelink = 'next page' , $previouspagelink = 'previous page' , $pagelink = '%' , $more_file = '' ) {
global $id , $page , $numpages , $multipage , $more ;
global $pagenow ;
if ( $more_file != '' ) {
$file = $more_file ;
} else {
$file = $pagenow ;
}
if (( $multipage )) {
if ( $next_or_number == 'number' ) {
echo $before ;
for ( $i = 1 ; $i < ( $numpages + 1 ); $i = $i + 1 ) {
$j = str_replace ( '%' , " $i " , $pagelink );
2004-02-20 02:53:41 +01:00
echo ' ' ;
2004-01-27 10:58:01 +01:00
if (( $i != $page ) || (( ! $more ) && ( $page == 1 ))) {
2004-06-08 11:29:41 +02:00
if ( '' == get_settings ( 'permalink_structure' )) {
2005-02-07 08:37:53 +01:00
echo '<a href="' . get_permalink () . '&page=' . $i . '">' ;
2004-06-08 11:29:41 +02:00
} else {
2005-02-07 08:37:53 +01:00
echo '<a href="' . get_permalink () . $i . '/">' ;
2004-06-08 11:29:41 +02:00
}
2004-01-27 10:58:01 +01:00
}
echo $j ;
if (( $i != $page ) || (( ! $more ) && ( $page == 1 )))
echo '</a>' ;
}
echo $after ;
} else {
if ( $more ) {
echo $before ;
$i = $page - 1 ;
if ( $i && $more ) {
2004-06-08 11:29:41 +02:00
if ( '' == get_settings ( 'permalink_structure' )) {
2005-02-07 10:14:14 +01:00
echo '<a href="' . get_permalink () . '&page=' . $i . '">' . $previouspagelink . '</a>' ;
2004-06-08 11:29:41 +02:00
} else {
2005-02-07 08:37:53 +01:00
echo '<a href="' . get_permalink () . $i . '/">' . $previouspagelink . '</a>' ;
2004-06-08 11:29:41 +02:00
}
2004-01-27 10:58:01 +01:00
}
$i = $page + 1 ;
if ( $i <= $numpages && $more ) {
2004-06-08 11:29:41 +02:00
if ( '' == get_settings ( 'permalink_structure' )) {
2005-02-07 08:37:53 +01:00
echo '<a href="' . get_permalink () . '&page=' . $i . '">' . $nextpagelink . '</a>' ;
2004-06-08 11:29:41 +02:00
} else {
echo '<a href="' . get_permalink () . $i . '/">' . $nextpagelink . '</a>' ;
}
2004-01-27 10:58:01 +01:00
}
echo $after ;
}
}
}
}
2004-02-26 22:42:47 +01: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 ;
if ( $post_id )
$id = $post_id ;
if ( isset ( $post_meta_cache [ $id ]) ) {
return $post_meta_cache [ $id ];
} else {
if ( $meta_list = $wpdb -> get_results ( " SELECT post_id, meta_key, meta_value FROM $wpdb->postmeta WHERE post_id = ' $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 ();
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 ;
}
return $post_meta_cache [ $mpid ];
}
}
2004-02-26 22:42:47 +01:00
}
function get_post_custom_keys () {
global $id , $post_meta_cache ;
if ( ! is_array ( $post_meta_cache [ $id ]))
return ;
if ( $keys = array_keys ( $post_meta_cache [ $id ]))
return $keys ;
}
function get_post_custom_values ( $key = '' ) {
global $id , $post_meta_cache ;
return $post_meta_cache [ $id ][ $key ];
}
2005-02-02 23:52:47 +01:00
function post_custom ( $key = '' ) {
2005-03-08 17:28:57 +01:00
global $id , $post_meta_cache ;
2005-02-02 23:52:47 +01:00
if ( 1 == count ( $post_meta_cache [ $id ][ $key ]) ) return $post_meta_cache [ $id ][ $key ][ 0 ];
else return $post_meta_cache [ $id ][ $key ];
}
2004-02-26 22:42:47 +01:00
// this will probably change at some point...
function the_meta () {
global $id , $post_meta_cache ;
if ( $keys = get_post_custom_keys ()) {
2004-03-29 20:46:33 +02:00
echo " <ul class='post-meta'> \n " ;
2004-02-26 22:42:47 +01:00
foreach ( $keys as $key ) {
2004-02-26 23:22:54 +01:00
$values = array_map ( 'trim' , $post_meta_cache [ $id ][ $key ]);
$value = implode ( $values , ', ' );
2004-02-26 22:42:47 +01:00
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
//
// Pages
//
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 ();
foreach ( $pages as $page ) {
if ( $page -> post_parent == $page_id ) {
$page_list [] = $page ;
if ( $children = get_page_children ( $page -> ID , $pages )) {
$page_list = array_merge ( $page_list , $children );
}
}
}
return $page_list ;
}
2005-03-27 22:45:01 +02:00
function & get_pages ( $args = '' ) {
2005-03-28 00:17:23 +02:00
global $wpdb ;
2004-10-09 04:03:37 +02:00
2005-03-09 04:16:30 +01:00
parse_str ( $args , $r );
2005-02-16 16:12:04 +01:00
2005-03-09 04:16:30 +01:00
if ( ! isset ( $r [ 'child_of' ])) $r [ 'child_of' ] = 0 ;
if ( ! isset ( $r [ 'sort_column' ])) $r [ 'sort_column' ] = 'post_title' ;
if ( ! isset ( $r [ 'sort_order' ])) $r [ 'sort_order' ] = 'ASC' ;
$exclusions = '' ;
if ( ! empty ( $r [ 'exclude' ])) {
$expages = preg_split ( '/[\s,]+/' , $r [ 'exclude' ]);
if ( count ( $expages )) {
foreach ( $expages as $expage ) {
$exclusions .= ' AND ID <> ' . intval ( $expage ) . ' ' ;
2004-12-16 09:02:53 +01:00
}
}
2005-03-09 04:16:30 +01:00
}
2004-10-09 04:03:37 +02:00
2005-03-27 22:45:01 +02:00
$pages = $wpdb -> get_results ( " SELECT * " .
2005-03-09 04:16:30 +01:00
" FROM $wpdb->posts " .
" WHERE post_status = 'static' " .
" $exclusions " .
" ORDER BY " . $r [ 'sort_column' ] . " " . $r [ 'sort_order' ]);
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
2005-03-28 00:17:23 +02:00
if ( $r [ 'child_of' ])
$pages = & get_page_children ( $r [ 'child_of' ], $pages );
2005-03-09 04:16:30 +01:00
return $pages ;
2004-12-30 20:41:14 +01:00
}
function wp_list_pages ( $args = '' ) {
parse_str ( $args , $r );
if ( ! isset ( $r [ 'depth' ])) $r [ 'depth' ] = 0 ;
if ( ! isset ( $r [ 'show_date' ])) $r [ 'show_date' ] = '' ;
if ( ! isset ( $r [ 'child_of' ])) $r [ 'child_of' ] = 0 ;
2005-01-02 00:05:07 +01:00
if ( ! isset ( $r [ 'title_li' ]) ) $r [ 'title_li' ] = __ ( 'Pages' );
2004-12-30 20:41:14 +01:00
// Query pages.
2005-03-27 22:45:01 +02:00
$pages = & get_pages ( $args );
2005-01-02 00:05:07 +01:00
if ( $pages ) :
2004-12-30 20:41:14 +01:00
2005-01-02 00:05:07 +01:00
if ( $r [ 'title_li' ] )
2005-02-12 08:31:56 +01:00
echo '<li id="pagenav">' . $r [ 'title_li' ] . '<ul>' ;
2004-12-30 20:41:14 +01:00
// Now loop over all pages that were selected
2004-12-16 09:02:53 +01:00
$page_tree = Array ();
foreach ( $pages as $page ) {
2004-12-30 20:41:14 +01:00
// set the title for the current page
2004-12-16 09:02:53 +01:00
$page_tree [ $page -> ID ][ 'title' ] = $page -> post_title ;
2005-02-16 16:12:04 +01:00
$page_tree [ $page -> ID ][ 'name' ] = $page -> post_name ;
2004-12-16 09:02:53 +01:00
2004-12-30 20:41:14 +01:00
// set the selected date for the current page
// depending on the query arguments this is either
// the createtion date or the modification date
// as a unix timestamp. It will also always be in the
// ts field.
if ( ! empty ( $r [ 'show_date' ])) {
if ( 'modified' == $r [ 'show_date' ])
2005-03-27 22:45:01 +02:00
$page_tree [ $page -> ID ][ 'ts' ] = $page -> post_modified ;
2004-12-30 20:41:14 +01:00
else
2005-03-27 22:45:01 +02:00
$page_tree [ $page -> ID ][ 'ts' ] = $page -> post_date ;
2004-12-16 09:02:53 +01:00
}
2004-12-30 20:41:14 +01:00
// The tricky bit!!
// Using the parent ID of the current page as the
// array index we set the curent page as a child of that page.
// We can now start looping over the $page_tree array
// with any ID which will output the page links from that ID downwards.
2005-03-13 02:24:18 +01:00
if ( $page -> post_parent != $page -> ID )
$page_tree [ $page -> post_parent ][ 'children' ][] = $page -> ID ;
2004-12-16 09:02:53 +01:00
}
2004-12-30 20:41:14 +01:00
// Output of the pages starting with child_of as the root ID.
// child_of defaults to 0 if not supplied in the query.
_page_level_out ( $r [ 'child_of' ], $page_tree , $r );
2005-01-02 00:05:07 +01:00
if ( $r [ 'title_li' ] )
echo '</ul></li>' ;
endif ;
2004-12-16 09:02:53 +01:00
}
2004-12-30 20:41:14 +01:00
function _page_level_out ( $parent , $page_tree , $args , $depth = 0 ) {
global $wp_query ;
$queried_obj = $wp_query -> get_queried_object ();
2004-12-16 09:02:53 +01:00
if ( $depth )
2005-01-15 16:51:31 +01:00
$indent = str_repeat ( " \t " , $depth );
//$indent = join('', array_fill(0,$depth,"\t"));
2004-12-16 09:02:53 +01:00
foreach ( $page_tree [ $parent ][ 'children' ] as $page_id ) {
$cur_page = $page_tree [ $page_id ];
$title = $cur_page [ 'title' ];
2004-12-30 20:41:14 +01:00
$css_class = 'page_item' ;
if ( $page_id == $queried_obj -> ID ) {
$css_class .= ' current_page_item' ;
}
echo $indent . '<li class="' . $css_class . '"><a href="' . get_page_link ( $page_id ) . '" title="' . wp_specialchars ( $title ) . '">' . $title . '</a>' ;
2004-12-16 09:02:53 +01:00
if ( isset ( $cur_page [ 'ts' ])) {
$format = get_settings ( 'date_format' );
if ( isset ( $args [ 'date_format' ]))
$format = $args [ 'date_format' ];
2005-03-27 22:45:01 +02:00
echo " " . mysql2date ( $format , $cur_page [ 'ts' ]);
2004-12-16 09:02:53 +01:00
}
echo " \n " ;
if ( isset ( $cur_page [ 'children' ]) && is_array ( $cur_page [ 'children' ])) {
$new_depth = $depth + 1 ;
2004-10-09 04:03:37 +02:00
2004-12-16 09:02:53 +01:00
if ( ! $args [ 'depth' ] || $depth < ( $args [ 'depth' ] - 1 )) {
2005-02-14 08:09:51 +01:00
echo " $indent <ul> \n " ;
2004-12-30 20:41:14 +01:00
_page_level_out ( $page_id , $page_tree , $args , $new_depth );
2005-02-14 08:09:51 +01:00
echo " $indent </ul> \n " ;
2004-12-16 09:02:53 +01:00
}
}
echo " $indent </li> \n " ;
2004-10-09 04:03:37 +02:00
}
}
2005-01-05 00:30:10 +01:00
?>