web/wp-includes/post-template.php
author ymh <ymh.work@gmail.com>
Mon, 22 Mar 2010 16:36:28 +0100
changeset 5 ac511f1ccc8e
parent 1 0d28b7c10758
permissions -rw-r--r--
add hgignore
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
0d28b7c10758 First commit
ymh
parents:
diff changeset
     1
<?php
0d28b7c10758 First commit
ymh
parents:
diff changeset
     2
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
     3
 * WordPress Post Template Functions.
0d28b7c10758 First commit
ymh
parents:
diff changeset
     4
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
     5
 * Gets content for the current post in the loop.
0d28b7c10758 First commit
ymh
parents:
diff changeset
     6
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
     7
 * @package WordPress
0d28b7c10758 First commit
ymh
parents:
diff changeset
     8
 * @subpackage Template
0d28b7c10758 First commit
ymh
parents:
diff changeset
     9
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
    10
0d28b7c10758 First commit
ymh
parents:
diff changeset
    11
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
    12
 * Display the ID of the current item in the WordPress Loop.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    13
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
    14
 * @since 0.71
0d28b7c10758 First commit
ymh
parents:
diff changeset
    15
 * @uses $id
0d28b7c10758 First commit
ymh
parents:
diff changeset
    16
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
    17
function the_ID() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    18
	global $id;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    19
	echo $id;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    20
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    21
0d28b7c10758 First commit
ymh
parents:
diff changeset
    22
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
    23
 * Retrieve the ID of the current item in the WordPress Loop.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    24
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
    25
 * @since 2.1.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
    26
 * @uses $id
0d28b7c10758 First commit
ymh
parents:
diff changeset
    27
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
    28
 * @return unknown
0d28b7c10758 First commit
ymh
parents:
diff changeset
    29
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
    30
function get_the_ID() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    31
	global $id;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    32
	return $id;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    33
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    34
0d28b7c10758 First commit
ymh
parents:
diff changeset
    35
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
    36
 * Display or retrieve the current post title with optional content.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    37
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
    38
 * @since 0.71
0d28b7c10758 First commit
ymh
parents:
diff changeset
    39
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
    40
 * @param string $before Optional. Content to prepend to the title.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    41
 * @param string $after Optional. Content to append to the title.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    42
 * @param bool $echo Optional, default to true.Whether to display or return.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    43
 * @return null|string Null on no title. String if $echo parameter is false.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    44
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
    45
function the_title($before = '', $after = '', $echo = true) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    46
	$title = get_the_title();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    47
0d28b7c10758 First commit
ymh
parents:
diff changeset
    48
	if ( strlen($title) == 0 )
0d28b7c10758 First commit
ymh
parents:
diff changeset
    49
		return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    50
0d28b7c10758 First commit
ymh
parents:
diff changeset
    51
	$title = $before . $title . $after;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    52
0d28b7c10758 First commit
ymh
parents:
diff changeset
    53
	if ( $echo )
0d28b7c10758 First commit
ymh
parents:
diff changeset
    54
		echo $title;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    55
	else
0d28b7c10758 First commit
ymh
parents:
diff changeset
    56
		return $title;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    57
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    58
0d28b7c10758 First commit
ymh
parents:
diff changeset
    59
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
    60
 * Sanitize the current title when retrieving or displaying.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    61
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
    62
 * Works like {@link the_title()}, except the parameters can be in a string or
0d28b7c10758 First commit
ymh
parents:
diff changeset
    63
 * an array. See the function for what can be override in the $args parameter.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    64
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
    65
 * The title before it is displayed will have the tags stripped and {@link
0d28b7c10758 First commit
ymh
parents:
diff changeset
    66
 * esc_attr()} before it is passed to the user or displayed. The default
0d28b7c10758 First commit
ymh
parents:
diff changeset
    67
 * as with {@link the_title()}, is to display the title.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    68
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
    69
 * @since 2.3.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
    70
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
    71
 * @param string|array $args Optional. Override the defaults.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    72
 * @return string|null Null on failure or display. String when echo is false.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    73
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
    74
function the_title_attribute( $args = '' ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    75
	$title = get_the_title();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    76
0d28b7c10758 First commit
ymh
parents:
diff changeset
    77
	if ( strlen($title) == 0 )
0d28b7c10758 First commit
ymh
parents:
diff changeset
    78
		return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    79
0d28b7c10758 First commit
ymh
parents:
diff changeset
    80
	$defaults = array('before' => '', 'after' =>  '', 'echo' => true);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    81
	$r = wp_parse_args($args, $defaults);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    82
	extract( $r, EXTR_SKIP );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    83
0d28b7c10758 First commit
ymh
parents:
diff changeset
    84
0d28b7c10758 First commit
ymh
parents:
diff changeset
    85
	$title = $before . $title . $after;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    86
	$title = esc_attr(strip_tags($title));
0d28b7c10758 First commit
ymh
parents:
diff changeset
    87
0d28b7c10758 First commit
ymh
parents:
diff changeset
    88
	if ( $echo )
0d28b7c10758 First commit
ymh
parents:
diff changeset
    89
		echo $title;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    90
	else
0d28b7c10758 First commit
ymh
parents:
diff changeset
    91
		return $title;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    92
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    93
0d28b7c10758 First commit
ymh
parents:
diff changeset
    94
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
    95
 * Retrieve post title.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    96
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
    97
 * If the post is protected and the visitor is not an admin, then "Protected"
0d28b7c10758 First commit
ymh
parents:
diff changeset
    98
 * will be displayed before the post title. If the post is private, then
0d28b7c10758 First commit
ymh
parents:
diff changeset
    99
 * "Private" will be located before the post title.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   100
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   101
 * @since 0.71
0d28b7c10758 First commit
ymh
parents:
diff changeset
   102
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   103
 * @param int $id Optional. Post ID.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   104
 * @return string
0d28b7c10758 First commit
ymh
parents:
diff changeset
   105
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   106
function get_the_title( $id = 0 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   107
	$post = &get_post($id);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   108
0d28b7c10758 First commit
ymh
parents:
diff changeset
   109
	$title = $post->post_title;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   110
0d28b7c10758 First commit
ymh
parents:
diff changeset
   111
	if ( !is_admin() ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   112
		if ( !empty($post->post_password) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   113
			$protected_title_format = apply_filters('protected_title_format', __('Protected: %s'));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   114
			$title = sprintf($protected_title_format, $title);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   115
		} else if ( isset($post->post_status) && 'private' == $post->post_status ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   116
			$private_title_format = apply_filters('private_title_format', __('Private: %s'));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   117
			$title = sprintf($private_title_format, $title);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   118
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   119
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   120
	return apply_filters( 'the_title', $title, $post->ID );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   121
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   122
0d28b7c10758 First commit
ymh
parents:
diff changeset
   123
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   124
 * Display the Post Global Unique Identifier (guid).
0d28b7c10758 First commit
ymh
parents:
diff changeset
   125
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   126
 * The guid will appear to be a link, but should not be used as an link to the
0d28b7c10758 First commit
ymh
parents:
diff changeset
   127
 * post. The reason you should not use it as a link, is because of moving the
0d28b7c10758 First commit
ymh
parents:
diff changeset
   128
 * blog across domains.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   129
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   130
 * @since 1.5.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
   131
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   132
 * @param int $id Optional. Post ID.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   133
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   134
function the_guid( $id = 0 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   135
	echo get_the_guid($id);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   136
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   137
0d28b7c10758 First commit
ymh
parents:
diff changeset
   138
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   139
 * Retrieve the Post Global Unique Identifier (guid).
0d28b7c10758 First commit
ymh
parents:
diff changeset
   140
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   141
 * The guid will appear to be a link, but should not be used as an link to the
0d28b7c10758 First commit
ymh
parents:
diff changeset
   142
 * post. The reason you should not use it as a link, is because of moving the
0d28b7c10758 First commit
ymh
parents:
diff changeset
   143
 * blog across domains.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   144
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   145
 * @since 1.5.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
   146
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   147
 * @param int $id Optional. Post ID.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   148
 * @return string
0d28b7c10758 First commit
ymh
parents:
diff changeset
   149
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   150
function get_the_guid( $id = 0 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   151
	$post = &get_post($id);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   152
0d28b7c10758 First commit
ymh
parents:
diff changeset
   153
	return apply_filters('get_the_guid', $post->guid);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   154
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   155
0d28b7c10758 First commit
ymh
parents:
diff changeset
   156
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   157
 * Display the post content.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   158
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   159
 * @since 0.71
0d28b7c10758 First commit
ymh
parents:
diff changeset
   160
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   161
 * @param string $more_link_text Optional. Content for when there is more text.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   162
 * @param string $stripteaser Optional. Teaser content before the more text.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   163
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   164
function the_content($more_link_text = null, $stripteaser = 0) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   165
	$content = get_the_content($more_link_text, $stripteaser);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   166
	$content = apply_filters('the_content', $content);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   167
	$content = str_replace(']]>', ']]&gt;', $content);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   168
	if (is_single() && function_exists(amt_cc)) { $content = amt_cc($content); }
0d28b7c10758 First commit
ymh
parents:
diff changeset
   169
	echo $content;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   170
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   171
0d28b7c10758 First commit
ymh
parents:
diff changeset
   172
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   173
 * Retrieve the post content.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   174
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   175
 * @since 0.71
0d28b7c10758 First commit
ymh
parents:
diff changeset
   176
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   177
 * @param string $more_link_text Optional. Content for when there is more text.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   178
 * @param string $stripteaser Optional. Teaser content before the more text.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   179
 * @return string
0d28b7c10758 First commit
ymh
parents:
diff changeset
   180
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   181
function get_the_content($more_link_text = null, $stripteaser = 0) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   182
	global $id, $post, $more, $page, $pages, $multipage, $preview, $pagenow;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   183
0d28b7c10758 First commit
ymh
parents:
diff changeset
   184
	if ( null === $more_link_text )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   185
		$more_link_text = __( '(more...)' );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   186
0d28b7c10758 First commit
ymh
parents:
diff changeset
   187
	$output = '';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   188
	$hasTeaser = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   189
0d28b7c10758 First commit
ymh
parents:
diff changeset
   190
	// If post password required and it doesn't match the cookie.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   191
	if ( post_password_required($post) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   192
		$output = get_the_password_form();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   193
		return $output;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   194
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   195
0d28b7c10758 First commit
ymh
parents:
diff changeset
   196
	if ( $page > count($pages) ) // if the requested page doesn't exist
0d28b7c10758 First commit
ymh
parents:
diff changeset
   197
		$page = count($pages); // give them the highest numbered page that DOES exist
0d28b7c10758 First commit
ymh
parents:
diff changeset
   198
0d28b7c10758 First commit
ymh
parents:
diff changeset
   199
	$content = $pages[$page-1];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   200
	if ( preg_match('/<!--more(.*?)?-->/', $content, $matches) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   201
		$content = explode($matches[0], $content, 2);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   202
		if ( !empty($matches[1]) && !empty($more_link_text) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   203
			$more_link_text = strip_tags(wp_kses_no_null(trim($matches[1])));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   204
0d28b7c10758 First commit
ymh
parents:
diff changeset
   205
		$hasTeaser = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   206
	} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   207
		$content = array($content);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   208
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   209
	if ( (false !== strpos($post->post_content, '<!--noteaser-->') && ((!$multipage) || ($page==1))) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   210
		$stripteaser = 1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   211
	$teaser = $content[0];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   212
	if ( ($more) && ($stripteaser) && ($hasTeaser) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   213
		$teaser = '';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   214
	$output .= $teaser;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   215
	if ( count($content) > 1 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   216
		if ( $more ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   217
			$output .= '<span id="more-' . $id . '"></span>' . $content[1];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   218
		} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   219
			if ( ! empty($more_link_text) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   220
				$output .= apply_filters( 'the_content_more_link', ' <a href="' . get_permalink() . "#more-$id\" class=\"more-link\">$more_link_text</a>", $more_link_text );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   221
			$output = force_balance_tags($output);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   222
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   223
0d28b7c10758 First commit
ymh
parents:
diff changeset
   224
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   225
	if ( $preview ) // preview fix for javascript bug with foreign languages
0d28b7c10758 First commit
ymh
parents:
diff changeset
   226
		$output =	preg_replace_callback('/\%u([0-9A-F]{4})/', create_function('$match', 'return "&#" . base_convert($match[1], 16, 10) . ";";'), $output);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   227
0d28b7c10758 First commit
ymh
parents:
diff changeset
   228
	return $output;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   229
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   230
0d28b7c10758 First commit
ymh
parents:
diff changeset
   231
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   232
 * Display the post excerpt.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   233
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   234
 * @since 0.71
0d28b7c10758 First commit
ymh
parents:
diff changeset
   235
 * @uses apply_filters() Calls 'the_excerpt' hook on post excerpt.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   236
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   237
function the_excerpt() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   238
	echo apply_filters('the_excerpt', get_the_excerpt());
0d28b7c10758 First commit
ymh
parents:
diff changeset
   239
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   240
0d28b7c10758 First commit
ymh
parents:
diff changeset
   241
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   242
 * Retrieve the post excerpt.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   243
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   244
 * @since 0.71
0d28b7c10758 First commit
ymh
parents:
diff changeset
   245
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   246
 * @param mixed $deprecated Not used.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   247
 * @return string
0d28b7c10758 First commit
ymh
parents:
diff changeset
   248
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   249
function get_the_excerpt($deprecated = '') {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   250
	global $post;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   251
	$output = $post->post_excerpt;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   252
	if ( post_password_required($post) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   253
		$output = __('There is no excerpt because this is a protected post.');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   254
		return $output;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   255
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   256
0d28b7c10758 First commit
ymh
parents:
diff changeset
   257
	return apply_filters('get_the_excerpt', $output);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   258
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   259
0d28b7c10758 First commit
ymh
parents:
diff changeset
   260
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   261
 * Whether post has excerpt.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   262
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   263
 * @since 2.3.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
   264
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   265
 * @param int $id Optional. Post ID.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   266
 * @return bool
0d28b7c10758 First commit
ymh
parents:
diff changeset
   267
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   268
function has_excerpt( $id = 0 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   269
	$post = &get_post( $id );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   270
	return ( !empty( $post->post_excerpt ) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   271
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   272
0d28b7c10758 First commit
ymh
parents:
diff changeset
   273
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   274
 * Display the classes for the post div.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   275
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   276
 * @since 2.7.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
   277
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   278
 * @param string|array $class One or more classes to add to the class list.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   279
 * @param int $post_id An optional post ID.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   280
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   281
function post_class( $class = '', $post_id = null ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   282
	// Separates classes with a single space, collates classes for post DIV
0d28b7c10758 First commit
ymh
parents:
diff changeset
   283
	echo 'class="' . join( ' ', get_post_class( $class, $post_id ) ) . '"';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   284
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   285
0d28b7c10758 First commit
ymh
parents:
diff changeset
   286
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   287
 * Retrieve the classes for the post div as an array.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   288
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   289
 * The class names are add are many. If the post is a sticky, then the 'sticky'
0d28b7c10758 First commit
ymh
parents:
diff changeset
   290
 * class name. The class 'hentry' is always added to each post. For each
0d28b7c10758 First commit
ymh
parents:
diff changeset
   291
 * category, the class will be added with 'category-' with category slug is
0d28b7c10758 First commit
ymh
parents:
diff changeset
   292
 * added. The tags are the same way as the categories with 'tag-' before the tag
0d28b7c10758 First commit
ymh
parents:
diff changeset
   293
 * slug. All classes are passed through the filter, 'post_class' with the list
0d28b7c10758 First commit
ymh
parents:
diff changeset
   294
 * of classes, followed by $class parameter value, with the post ID as the last
0d28b7c10758 First commit
ymh
parents:
diff changeset
   295
 * parameter.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   296
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   297
 * @since 2.7.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
   298
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   299
 * @param string|array $class One or more classes to add to the class list.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   300
 * @param int $post_id An optional post ID.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   301
 * @return array Array of classes.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   302
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   303
function get_post_class( $class = '', $post_id = null ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   304
	$post = get_post($post_id);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   305
0d28b7c10758 First commit
ymh
parents:
diff changeset
   306
	$classes = array();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   307
0d28b7c10758 First commit
ymh
parents:
diff changeset
   308
	if ( empty($post) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   309
		return $classes;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   310
0d28b7c10758 First commit
ymh
parents:
diff changeset
   311
	$classes[] = 'post-' . $post->ID;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   312
	$classes[] = $post->post_type;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   313
0d28b7c10758 First commit
ymh
parents:
diff changeset
   314
	// sticky for Sticky Posts
0d28b7c10758 First commit
ymh
parents:
diff changeset
   315
	if ( is_sticky($post->ID) && is_home())
0d28b7c10758 First commit
ymh
parents:
diff changeset
   316
		$classes[] = 'sticky';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   317
0d28b7c10758 First commit
ymh
parents:
diff changeset
   318
	// hentry for hAtom compliace
0d28b7c10758 First commit
ymh
parents:
diff changeset
   319
	$classes[] = 'hentry';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   320
0d28b7c10758 First commit
ymh
parents:
diff changeset
   321
	// Categories
0d28b7c10758 First commit
ymh
parents:
diff changeset
   322
	foreach ( (array) get_the_category($post->ID) as $cat ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   323
		if ( empty($cat->slug ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   324
			continue;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   325
		$classes[] = 'category-' . sanitize_html_class($cat->slug, $cat->cat_ID);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   326
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   327
0d28b7c10758 First commit
ymh
parents:
diff changeset
   328
	// Tags
0d28b7c10758 First commit
ymh
parents:
diff changeset
   329
	foreach ( (array) get_the_tags($post->ID) as $tag ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   330
		if ( empty($tag->slug ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   331
			continue;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   332
		$classes[] = 'tag-' . sanitize_html_class($tag->slug, $tag->term_id);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   333
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   334
0d28b7c10758 First commit
ymh
parents:
diff changeset
   335
	if ( !empty($class) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   336
		if ( !is_array( $class ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   337
			$class = preg_split('#\s+#', $class);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   338
		$classes = array_merge($classes, $class);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   339
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   340
0d28b7c10758 First commit
ymh
parents:
diff changeset
   341
	$classes = array_map('esc_attr', $classes);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   342
0d28b7c10758 First commit
ymh
parents:
diff changeset
   343
	return apply_filters('post_class', $classes, $class, $post_id);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   344
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   345
0d28b7c10758 First commit
ymh
parents:
diff changeset
   346
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   347
 * Display the classes for the body element.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   348
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   349
 * @since 2.8.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
   350
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   351
 * @param string|array $class One or more classes to add to the class list.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   352
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   353
function body_class( $class = '' ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   354
	// Separates classes with a single space, collates classes for body element
0d28b7c10758 First commit
ymh
parents:
diff changeset
   355
	echo 'class="' . join( ' ', get_body_class( $class ) ) . '"';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   356
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   357
0d28b7c10758 First commit
ymh
parents:
diff changeset
   358
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   359
 * Retrieve the classes for the body element as an array.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   360
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   361
 * @since 2.8.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
   362
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   363
 * @param string|array $class One or more classes to add to the class list.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   364
 * @return array Array of classes.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   365
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   366
function get_body_class( $class = '' ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   367
	global $wp_query, $wpdb, $current_user;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   368
0d28b7c10758 First commit
ymh
parents:
diff changeset
   369
	$classes = array();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   370
0d28b7c10758 First commit
ymh
parents:
diff changeset
   371
	if ( 'rtl' == get_bloginfo('text_direction') )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   372
		$classes[] = 'rtl';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   373
0d28b7c10758 First commit
ymh
parents:
diff changeset
   374
	if ( is_front_page() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   375
		$classes[] = 'home';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   376
	if ( is_home() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   377
		$classes[] = 'blog';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   378
	if ( is_archive() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   379
		$classes[] = 'archive';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   380
	if ( is_date() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   381
		$classes[] = 'date';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   382
	if ( is_search() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   383
		$classes[] = 'search';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   384
	if ( is_paged() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   385
		$classes[] = 'paged';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   386
	if ( is_attachment() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   387
		$classes[] = 'attachment';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   388
	if ( is_404() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   389
		$classes[] = 'error404';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   390
0d28b7c10758 First commit
ymh
parents:
diff changeset
   391
	if ( is_single() ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   392
		$wp_query->post = $wp_query->posts[0];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   393
		setup_postdata($wp_query->post);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   394
0d28b7c10758 First commit
ymh
parents:
diff changeset
   395
		$postID = $wp_query->post->ID;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   396
		$classes[] = 'single postid-' . $postID;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   397
0d28b7c10758 First commit
ymh
parents:
diff changeset
   398
		if ( is_attachment() ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   399
			$mime_type = get_post_mime_type();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   400
			$mime_prefix = array( 'application/', 'image/', 'text/', 'audio/', 'video/', 'music/' );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   401
			$classes[] = 'attachmentid-' . $postID;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   402
			$classes[] = 'attachment-' . str_replace($mime_prefix, '', $mime_type);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   403
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   404
	} elseif ( is_archive() ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   405
		if ( is_author() ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   406
			$author = $wp_query->get_queried_object();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   407
			$classes[] = 'author';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   408
			$classes[] = 'author-' . sanitize_html_class($author->user_nicename , $author->ID);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   409
		} elseif ( is_category() ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   410
			$cat = $wp_query->get_queried_object();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   411
			$classes[] = 'category';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   412
			$classes[] = 'category-' . sanitize_html_class($cat->slug, $cat->cat_ID);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   413
		} elseif ( is_tag() ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   414
			$tags = $wp_query->get_queried_object();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   415
			$classes[] = 'tag';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   416
			$classes[] = 'tag-' . sanitize_html_class($tags->slug, $tags->term_id);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   417
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   418
	} elseif ( is_page() ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   419
		$classes[] = 'page';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   420
0d28b7c10758 First commit
ymh
parents:
diff changeset
   421
		$wp_query->post = $wp_query->posts[0];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   422
		setup_postdata($wp_query->post);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   423
0d28b7c10758 First commit
ymh
parents:
diff changeset
   424
		$pageID = $wp_query->post->ID;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   425
0d28b7c10758 First commit
ymh
parents:
diff changeset
   426
		$classes[] = 'page-id-' . $pageID;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   427
0d28b7c10758 First commit
ymh
parents:
diff changeset
   428
		if ( $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'page' LIMIT 1", $pageID) ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   429
			$classes[] = 'page-parent';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   430
0d28b7c10758 First commit
ymh
parents:
diff changeset
   431
		if ( $wp_query->post->post_parent ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   432
			$classes[] = 'page-child';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   433
			$classes[] = 'parent-pageid-' . $wp_query->post->post_parent;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   434
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   435
		if ( is_page_template() ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   436
			$classes[] = 'page-template';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   437
			$classes[] = 'page-template-' . str_replace( '.php', '-php', get_post_meta( $pageID, '_wp_page_template', true ) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   438
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   439
	} elseif ( is_search() ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   440
		if ( !empty($wp_query->posts) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   441
			$classes[] = 'search-results';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   442
		else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   443
			$classes[] = 'search-no-results';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   444
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   445
0d28b7c10758 First commit
ymh
parents:
diff changeset
   446
	if ( is_user_logged_in() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   447
		$classes[] = 'logged-in';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   448
0d28b7c10758 First commit
ymh
parents:
diff changeset
   449
	$page = $wp_query->get('page');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   450
0d28b7c10758 First commit
ymh
parents:
diff changeset
   451
	if ( !$page || $page < 2)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   452
		$page = $wp_query->get('paged');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   453
0d28b7c10758 First commit
ymh
parents:
diff changeset
   454
	if ( $page && $page > 1 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   455
		$classes[] = 'paged-' . $page;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   456
0d28b7c10758 First commit
ymh
parents:
diff changeset
   457
		if ( is_single() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   458
			$classes[] = 'single-paged-' . $page;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   459
		elseif ( is_page() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   460
			$classes[] = 'page-paged-' . $page;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   461
		elseif ( is_category() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   462
			$classes[] = 'category-paged-' . $page;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   463
		elseif ( is_tag() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   464
			$classes[] = 'tag-paged-' . $page;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   465
		elseif ( is_date() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   466
			$classes[] = 'date-paged-' . $page;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   467
		elseif ( is_author() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   468
			$classes[] = 'author-paged-' . $page;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   469
		elseif ( is_search() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   470
			$classes[] = 'search-paged-' . $page;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   471
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   472
0d28b7c10758 First commit
ymh
parents:
diff changeset
   473
	if ( !empty($class) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   474
		if ( !is_array( $class ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   475
			$class = preg_split('#\s+#', $class);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   476
		$classes = array_merge($classes, $class);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   477
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   478
0d28b7c10758 First commit
ymh
parents:
diff changeset
   479
	$classes = array_map('esc_attr', $classes);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   480
0d28b7c10758 First commit
ymh
parents:
diff changeset
   481
	return apply_filters('body_class', $classes, $class);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   482
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   483
0d28b7c10758 First commit
ymh
parents:
diff changeset
   484
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   485
 * Whether post requires password and correct password has been provided.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   486
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   487
 * @since 2.7.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
   488
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   489
 * @param int|object $post An optional post.  Global $post used if not provided.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   490
 * @return bool false if a password is not required or the correct password cookie is present, true otherwise.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   491
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   492
function post_password_required( $post = null ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   493
	$post = get_post($post);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   494
0d28b7c10758 First commit
ymh
parents:
diff changeset
   495
	if ( empty($post->post_password) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   496
		return false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   497
0d28b7c10758 First commit
ymh
parents:
diff changeset
   498
	if ( !isset($_COOKIE['wp-postpass_' . COOKIEHASH]) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   499
		return true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   500
0d28b7c10758 First commit
ymh
parents:
diff changeset
   501
	if ( $_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   502
		return true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   503
0d28b7c10758 First commit
ymh
parents:
diff changeset
   504
	return false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   505
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   506
0d28b7c10758 First commit
ymh
parents:
diff changeset
   507
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   508
 * Display "sticky" CSS class, if a post is sticky.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   509
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   510
 * @since 2.7.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
   511
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   512
 * @param int $post_id An optional post ID.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   513
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   514
function sticky_class( $post_id = null ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   515
	if ( !is_sticky($post_id) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   516
		return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   517
0d28b7c10758 First commit
ymh
parents:
diff changeset
   518
	echo " sticky";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   519
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   520
0d28b7c10758 First commit
ymh
parents:
diff changeset
   521
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   522
 * Page Template Functions for usage in Themes
0d28b7c10758 First commit
ymh
parents:
diff changeset
   523
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   524
 * @package WordPress
0d28b7c10758 First commit
ymh
parents:
diff changeset
   525
 * @subpackage Template
0d28b7c10758 First commit
ymh
parents:
diff changeset
   526
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   527
0d28b7c10758 First commit
ymh
parents:
diff changeset
   528
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   529
 * The formatted output of a list of pages.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   530
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   531
 * Displays page links for paginated posts (i.e. includes the <!--nextpage-->.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   532
 * Quicktag one or more times). This tag must be within The Loop.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   533
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   534
 * The defaults for overwriting are:
0d28b7c10758 First commit
ymh
parents:
diff changeset
   535
 * 'next_or_number' - Default is 'number' (string). Indicates whether page
0d28b7c10758 First commit
ymh
parents:
diff changeset
   536
 *      numbers should be used. Valid values are number and next.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   537
 * 'nextpagelink' - Default is 'Next Page' (string). Text for link to next page.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   538
 *      of the bookmark.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   539
 * 'previouspagelink' - Default is 'Previous Page' (string). Text for link to
0d28b7c10758 First commit
ymh
parents:
diff changeset
   540
 *      previous page, if available.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   541
 * 'pagelink' - Default is '%' (String).Format string for page numbers. The % in
0d28b7c10758 First commit
ymh
parents:
diff changeset
   542
 *      the parameter string will be replaced with the page number, so Page %
0d28b7c10758 First commit
ymh
parents:
diff changeset
   543
 *      generates "Page 1", "Page 2", etc. Defaults to %, just the page number.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   544
 * 'before' - Default is '<p> Pages:' (string). The html or text to prepend to
0d28b7c10758 First commit
ymh
parents:
diff changeset
   545
 *      each bookmarks.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   546
 * 'after' - Default is '</p>' (string). The html or text to append to each
0d28b7c10758 First commit
ymh
parents:
diff changeset
   547
 *      bookmarks.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   548
 * 'link_before' - Default is '' (string). The html or text to prepend to each
0d28b7c10758 First commit
ymh
parents:
diff changeset
   549
 *      Pages link inside the <a> tag.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   550
 * 'link_after' - Default is '' (string). The html or text to append to each
0d28b7c10758 First commit
ymh
parents:
diff changeset
   551
 *      Pages link inside the <a> tag.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   552
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   553
 * @since 1.2.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
   554
 * @access private
0d28b7c10758 First commit
ymh
parents:
diff changeset
   555
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   556
 * @param string|array $args Optional. Overwrite the defaults.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   557
 * @return string Formatted output in HTML.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   558
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   559
function wp_link_pages($args = '') {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   560
	$defaults = array(
0d28b7c10758 First commit
ymh
parents:
diff changeset
   561
		'before' => '<p>' . __('Pages:'), 'after' => '</p>',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   562
		'link_before' => '', 'link_after' => '',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   563
		'next_or_number' => 'number', 'nextpagelink' => __('Next page'),
0d28b7c10758 First commit
ymh
parents:
diff changeset
   564
		'previouspagelink' => __('Previous page'), 'pagelink' => '%',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   565
		'echo' => 1
0d28b7c10758 First commit
ymh
parents:
diff changeset
   566
	);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   567
0d28b7c10758 First commit
ymh
parents:
diff changeset
   568
	$r = wp_parse_args( $args, $defaults );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   569
	extract( $r, EXTR_SKIP );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   570
0d28b7c10758 First commit
ymh
parents:
diff changeset
   571
	global $post, $page, $numpages, $multipage, $more, $pagenow;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   572
0d28b7c10758 First commit
ymh
parents:
diff changeset
   573
	$output = '';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   574
	if ( $multipage ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   575
		if ( 'number' == $next_or_number ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   576
			$output .= $before;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   577
			for ( $i = 1; $i < ($numpages+1); $i = $i + 1 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   578
				$j = str_replace('%',"$i",$pagelink);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   579
				$output .= ' ';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   580
				if ( ($i != $page) || ((!$more) && ($page==1)) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   581
					if ( 1 == $i ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   582
						$output .= '<a href="' . get_permalink() . '">';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   583
					} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   584
						if ( '' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending')) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   585
							$output .= '<a href="' . get_permalink() . '&amp;page=' . $i . '">';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   586
						else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   587
							$output .= '<a href="' . trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged') . '">';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   588
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   589
0d28b7c10758 First commit
ymh
parents:
diff changeset
   590
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   591
				$output .= $link_before;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   592
				$output .= $j;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   593
				$output .= $link_after;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   594
				if ( ($i != $page) || ((!$more) && ($page==1)) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   595
					$output .= '</a>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   596
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   597
			$output .= $after;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   598
		} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   599
			if ( $more ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   600
				$output .= $before;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   601
				$i = $page - 1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   602
				if ( $i && $more ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   603
					if ( 1 == $i ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   604
						$output .= '<a href="' . get_permalink() . '">' . $link_before. $previouspagelink . $link_after . '</a>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   605
					} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   606
						if ( '' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending')) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   607
							$output .= '<a href="' . get_permalink() . '&amp;page=' . $i . '">' . $link_before. $previouspagelink . $link_after . '</a>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   608
						else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   609
							$output .= '<a href="' . trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged') . '">' . $link_before. $previouspagelink . $link_after . '</a>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   610
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   611
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   612
				$i = $page + 1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   613
				if ( $i <= $numpages && $more ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   614
					if ( 1 == $i ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   615
						$output .= '<a href="' . get_permalink() . '">' . $link_before. $nextpagelink . $link_after . '</a>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   616
					} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   617
						if ( '' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending')) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   618
							$output .= '<a href="' . get_permalink() . '&amp;page=' . $i . '">' . $link_before. $nextpagelink . $link_after . '</a>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   619
						else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   620
							$output .= '<a href="' . trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged') . '">' . $link_before. $nextpagelink . $link_after . '</a>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   621
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   622
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   623
				$output .= $after;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   624
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   625
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   626
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   627
0d28b7c10758 First commit
ymh
parents:
diff changeset
   628
	if ( $echo )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   629
		echo $output;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   630
0d28b7c10758 First commit
ymh
parents:
diff changeset
   631
	return $output;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   632
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   633
0d28b7c10758 First commit
ymh
parents:
diff changeset
   634
0d28b7c10758 First commit
ymh
parents:
diff changeset
   635
//
0d28b7c10758 First commit
ymh
parents:
diff changeset
   636
// Post-meta: Custom per-post fields.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   637
//
0d28b7c10758 First commit
ymh
parents:
diff changeset
   638
0d28b7c10758 First commit
ymh
parents:
diff changeset
   639
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   640
 * Retrieve post custom meta data field.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   641
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   642
 * @since 1.5.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
   643
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   644
 * @param string $key Meta data key name.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   645
 * @return string|array Array of values or single value, if only one element exists.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   646
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   647
function post_custom( $key = '' ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   648
	$custom = get_post_custom();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   649
0d28b7c10758 First commit
ymh
parents:
diff changeset
   650
	if ( 1 == count($custom[$key]) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   651
		return $custom[$key][0];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   652
	else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   653
		return $custom[$key];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   654
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   655
0d28b7c10758 First commit
ymh
parents:
diff changeset
   656
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   657
 * Display list of post custom fields.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   658
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   659
 * @internal This will probably change at some point...
0d28b7c10758 First commit
ymh
parents:
diff changeset
   660
 * @since 1.2.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
   661
 * @uses apply_filters() Calls 'the_meta_key' on list item HTML content, with key and value as separate parameters.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   662
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   663
function the_meta() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   664
	if ( $keys = get_post_custom_keys() ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   665
		echo "<ul class='post-meta'>\n";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   666
		foreach ( (array) $keys as $key ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   667
			$keyt = trim($key);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   668
			if ( '_' == $keyt{0} )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   669
				continue;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   670
			$values = array_map('trim', get_post_custom_values($key));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   671
			$value = implode($values,', ');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   672
			echo apply_filters('the_meta_key', "<li><span class='post-meta-key'>$key:</span> $value</li>\n", $key, $value);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   673
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   674
		echo "</ul>\n";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   675
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   676
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   677
0d28b7c10758 First commit
ymh
parents:
diff changeset
   678
//
0d28b7c10758 First commit
ymh
parents:
diff changeset
   679
// Pages
0d28b7c10758 First commit
ymh
parents:
diff changeset
   680
//
0d28b7c10758 First commit
ymh
parents:
diff changeset
   681
0d28b7c10758 First commit
ymh
parents:
diff changeset
   682
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   683
 * Retrieve or display list of pages as a dropdown (select list).
0d28b7c10758 First commit
ymh
parents:
diff changeset
   684
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   685
 * @since 2.1.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
   686
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   687
 * @param array|string $args Optional. Override default arguments.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   688
 * @return string HTML content, if not displaying.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   689
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   690
function wp_dropdown_pages($args = '') {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   691
	$defaults = array(
0d28b7c10758 First commit
ymh
parents:
diff changeset
   692
		'depth' => 0, 'child_of' => 0,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   693
		'selected' => 0, 'echo' => 1,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   694
		'name' => 'page_id', 'show_option_none' => '', 'show_option_no_change' => '',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   695
		'option_none_value' => ''
0d28b7c10758 First commit
ymh
parents:
diff changeset
   696
	);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   697
0d28b7c10758 First commit
ymh
parents:
diff changeset
   698
	$r = wp_parse_args( $args, $defaults );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   699
	extract( $r, EXTR_SKIP );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   700
0d28b7c10758 First commit
ymh
parents:
diff changeset
   701
	$pages = get_pages($r);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   702
	$output = '';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   703
	$name = esc_attr($name);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   704
0d28b7c10758 First commit
ymh
parents:
diff changeset
   705
	if ( ! empty($pages) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   706
		$output = "<select name=\"$name\" id=\"$name\">\n";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   707
		if ( $show_option_no_change )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   708
			$output .= "\t<option value=\"-1\">$show_option_no_change</option>";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   709
		if ( $show_option_none )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   710
			$output .= "\t<option value=\"" . esc_attr($option_none_value) . "\">$show_option_none</option>\n";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   711
		$output .= walk_page_dropdown_tree($pages, $depth, $r);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   712
		$output .= "</select>\n";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   713
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   714
0d28b7c10758 First commit
ymh
parents:
diff changeset
   715
	$output = apply_filters('wp_dropdown_pages', $output);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   716
0d28b7c10758 First commit
ymh
parents:
diff changeset
   717
	if ( $echo )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   718
		echo $output;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   719
0d28b7c10758 First commit
ymh
parents:
diff changeset
   720
	return $output;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   721
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   722
0d28b7c10758 First commit
ymh
parents:
diff changeset
   723
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   724
 * Retrieve or display list of pages in list (li) format.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   725
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   726
 * @since 1.5.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
   727
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   728
 * @param array|string $args Optional. Override default arguments.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   729
 * @return string HTML content, if not displaying.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   730
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   731
function wp_list_pages($args = '') {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   732
	$defaults = array(
0d28b7c10758 First commit
ymh
parents:
diff changeset
   733
		'depth' => 0, 'show_date' => '',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   734
		'date_format' => get_option('date_format'),
0d28b7c10758 First commit
ymh
parents:
diff changeset
   735
		'child_of' => 0, 'exclude' => '',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   736
		'title_li' => __('Pages'), 'echo' => 1,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   737
		'authors' => '', 'sort_column' => 'menu_order, post_title',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   738
		'link_before' => '', 'link_after' => '', 'walker' => '',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   739
	);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   740
0d28b7c10758 First commit
ymh
parents:
diff changeset
   741
	$r = wp_parse_args( $args, $defaults );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   742
	extract( $r, EXTR_SKIP );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   743
0d28b7c10758 First commit
ymh
parents:
diff changeset
   744
	$output = '';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   745
	$current_page = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   746
0d28b7c10758 First commit
ymh
parents:
diff changeset
   747
	// sanitize, mostly to keep spaces out
0d28b7c10758 First commit
ymh
parents:
diff changeset
   748
	$r['exclude'] = preg_replace('/[^0-9,]/', '', $r['exclude']);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   749
0d28b7c10758 First commit
ymh
parents:
diff changeset
   750
	// Allow plugins to filter an array of excluded pages (but don't put a nullstring into the array)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   751
	$exclude_array = ( $r['exclude'] ) ? explode(',', $r['exclude']) : array();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   752
	$r['exclude'] = implode( ',', apply_filters('wp_list_pages_excludes', $exclude_array) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   753
0d28b7c10758 First commit
ymh
parents:
diff changeset
   754
	// Query pages.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   755
	$r['hierarchical'] = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   756
	$pages = get_pages($r);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   757
0d28b7c10758 First commit
ymh
parents:
diff changeset
   758
	if ( !empty($pages) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   759
		if ( $r['title_li'] )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   760
			$output .= '<li class="pagenav">' . $r['title_li'] . '<ul>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   761
0d28b7c10758 First commit
ymh
parents:
diff changeset
   762
		global $wp_query;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   763
		if ( is_page() || is_attachment() || $wp_query->is_posts_page )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   764
			$current_page = $wp_query->get_queried_object_id();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   765
		$output .= walk_page_tree($pages, $r['depth'], $current_page, $r);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   766
0d28b7c10758 First commit
ymh
parents:
diff changeset
   767
		if ( $r['title_li'] )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   768
			$output .= '</ul></li>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   769
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   770
0d28b7c10758 First commit
ymh
parents:
diff changeset
   771
	$output = apply_filters('wp_list_pages', $output, $r);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   772
0d28b7c10758 First commit
ymh
parents:
diff changeset
   773
	if ( $r['echo'] )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   774
		echo $output;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   775
	else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   776
		return $output;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   777
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   778
0d28b7c10758 First commit
ymh
parents:
diff changeset
   779
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   780
 * Display or retrieve list of pages with optional home link.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   781
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   782
 * The arguments are listed below and part of the arguments are for {@link
0d28b7c10758 First commit
ymh
parents:
diff changeset
   783
 * wp_list_pages()} function. Check that function for more info on those
0d28b7c10758 First commit
ymh
parents:
diff changeset
   784
 * arguments.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   785
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   786
 * <ul>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   787
 * <li><strong>sort_column</strong> - How to sort the list of pages. Defaults
0d28b7c10758 First commit
ymh
parents:
diff changeset
   788
 * to page title. Use column for posts table.</li>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   789
 * <li><strong>menu_class</strong> - Class to use for the div ID which contains
0d28b7c10758 First commit
ymh
parents:
diff changeset
   790
 * the page list. Defaults to 'menu'.</li>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   791
 * <li><strong>echo</strong> - Whether to echo list or return it. Defaults to
0d28b7c10758 First commit
ymh
parents:
diff changeset
   792
 * echo.</li>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   793
 * <li><strong>link_before</strong> - Text before show_home argument text.</li>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   794
 * <li><strong>link_after</strong> - Text after show_home argument text.</li>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   795
 * <li><strong>show_home</strong> - If you set this argument, then it will
0d28b7c10758 First commit
ymh
parents:
diff changeset
   796
 * display the link to the home page. The show_home argument really just needs
0d28b7c10758 First commit
ymh
parents:
diff changeset
   797
 * to be set to the value of the text of the link.</li>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   798
 * </ul>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   799
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   800
 * @since 2.7.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
   801
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   802
 * @param array|string $args
0d28b7c10758 First commit
ymh
parents:
diff changeset
   803
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   804
function wp_page_menu( $args = array() ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   805
	$defaults = array('sort_column' => 'menu_order, post_title', 'menu_class' => 'menu', 'echo' => true, 'link_before' => '', 'link_after' => '');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   806
	$args = wp_parse_args( $args, $defaults );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   807
	$args = apply_filters( 'wp_page_menu_args', $args );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   808
0d28b7c10758 First commit
ymh
parents:
diff changeset
   809
	$menu = '';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   810
0d28b7c10758 First commit
ymh
parents:
diff changeset
   811
	$list_args = $args;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   812
0d28b7c10758 First commit
ymh
parents:
diff changeset
   813
	// Show Home in the menu
0d28b7c10758 First commit
ymh
parents:
diff changeset
   814
	if ( isset($args['show_home']) && ! empty($args['show_home']) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   815
		if ( true === $args['show_home'] || '1' === $args['show_home'] || 1 === $args['show_home'] )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   816
			$text = __('Home');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   817
		else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   818
			$text = $args['show_home'];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   819
		$class = '';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   820
		if ( is_front_page() && !is_paged() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   821
			$class = 'class="current_page_item"';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   822
		$menu .= '<li ' . $class . '><a href="' . get_option('home') . '" title="' . esc_attr($text) . '">' . $args['link_before'] . $text . $args['link_after'] . '</a></li>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   823
		// If the front page is a page, add it to the exclude list
0d28b7c10758 First commit
ymh
parents:
diff changeset
   824
		if (get_option('show_on_front') == 'page') {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   825
			if ( !empty( $list_args['exclude'] ) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   826
				$list_args['exclude'] .= ',';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   827
			} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   828
				$list_args['exclude'] = '';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   829
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   830
			$list_args['exclude'] .= get_option('page_on_front');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   831
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   832
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   833
0d28b7c10758 First commit
ymh
parents:
diff changeset
   834
	$list_args['echo'] = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   835
	$list_args['title_li'] = '';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   836
	$menu .= str_replace( array( "\r", "\n", "\t" ), '', wp_list_pages($list_args) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   837
0d28b7c10758 First commit
ymh
parents:
diff changeset
   838
	if ( $menu )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   839
		$menu = '<ul>' . $menu . '</ul>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   840
0d28b7c10758 First commit
ymh
parents:
diff changeset
   841
	$menu = '<div class="' . esc_attr($args['menu_class']) . '">' . $menu . "</div>\n";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   842
	$menu = apply_filters( 'wp_page_menu', $menu, $args );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   843
	if ( $args['echo'] )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   844
		echo $menu;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   845
	else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   846
		return $menu;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   847
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   848
0d28b7c10758 First commit
ymh
parents:
diff changeset
   849
//
0d28b7c10758 First commit
ymh
parents:
diff changeset
   850
// Page helpers
0d28b7c10758 First commit
ymh
parents:
diff changeset
   851
//
0d28b7c10758 First commit
ymh
parents:
diff changeset
   852
0d28b7c10758 First commit
ymh
parents:
diff changeset
   853
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   854
 * Retrieve HTML list content for page list.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   855
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   856
 * @uses Walker_Page to create HTML list content.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   857
 * @since 2.1.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
   858
 * @see Walker_Page::walk() for parameters and return description.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   859
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   860
function walk_page_tree($pages, $depth, $current_page, $r) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   861
	if ( empty($r['walker']) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   862
		$walker = new Walker_Page;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   863
	else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   864
		$walker = $r['walker'];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   865
0d28b7c10758 First commit
ymh
parents:
diff changeset
   866
	$args = array($pages, $depth, $r, $current_page);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   867
	return call_user_func_array(array(&$walker, 'walk'), $args);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   868
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   869
0d28b7c10758 First commit
ymh
parents:
diff changeset
   870
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   871
 * Retrieve HTML dropdown (select) content for page list.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   872
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   873
 * @uses Walker_PageDropdown to create HTML dropdown content.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   874
 * @since 2.1.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
   875
 * @see Walker_PageDropdown::walk() for parameters and return description.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   876
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   877
function walk_page_dropdown_tree() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   878
	$args = func_get_args();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   879
	if ( empty($args[2]['walker']) ) // the user's options are the third parameter
0d28b7c10758 First commit
ymh
parents:
diff changeset
   880
		$walker = new Walker_PageDropdown;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   881
	else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   882
		$walker = $args[2]['walker'];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   883
0d28b7c10758 First commit
ymh
parents:
diff changeset
   884
	return call_user_func_array(array(&$walker, 'walk'), $args);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   885
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   886
0d28b7c10758 First commit
ymh
parents:
diff changeset
   887
//
0d28b7c10758 First commit
ymh
parents:
diff changeset
   888
// Attachments
0d28b7c10758 First commit
ymh
parents:
diff changeset
   889
//
0d28b7c10758 First commit
ymh
parents:
diff changeset
   890
0d28b7c10758 First commit
ymh
parents:
diff changeset
   891
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   892
 * Display an attachment page link using an image or icon.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   893
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   894
 * @since 2.0.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
   895
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   896
 * @param int $id Optional. Post ID.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   897
 * @param bool $fullsize Optional, default is false. Whether to use full size.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   898
 * @param bool $deprecated Deprecated. Not used.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   899
 * @param bool $permalink Optional, default is false. Whether to include permalink.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   900
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   901
function the_attachment_link($id = 0, $fullsize = false, $deprecated = false, $permalink = false) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   902
	if ( $fullsize )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   903
		echo wp_get_attachment_link($id, 'full', $permalink);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   904
	else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   905
		echo wp_get_attachment_link($id, 'thumbnail', $permalink);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   906
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   907
0d28b7c10758 First commit
ymh
parents:
diff changeset
   908
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   909
 * Retrieve an attachment page link using an image or icon, if possible.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   910
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   911
 * @since 2.5.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
   912
 * @uses apply_filters() Calls 'wp_get_attachment_link' filter on HTML content with same parameters as function.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   913
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   914
 * @param int $id Optional. Post ID.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   915
 * @param string $size Optional, default is 'thumbnail'. Size of image, either array or string.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   916
 * @param bool $permalink Optional, default is false. Whether to add permalink to image.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   917
 * @param bool $icon Optional, default is false. Whether to include icon.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   918
 * @param string $text Optional, default is false. If string, then will be link text.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   919
 * @return string HTML content.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   920
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   921
function wp_get_attachment_link($id = 0, $size = 'thumbnail', $permalink = false, $icon = false, $text = false) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   922
	$id = intval($id);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   923
	$_post = & get_post( $id );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   924
0d28b7c10758 First commit
ymh
parents:
diff changeset
   925
	if ( ('attachment' != $_post->post_type) || !$url = wp_get_attachment_url($_post->ID) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   926
		return __('Missing Attachment');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   927
0d28b7c10758 First commit
ymh
parents:
diff changeset
   928
	if ( $permalink )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   929
		$url = get_attachment_link($_post->ID);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   930
0d28b7c10758 First commit
ymh
parents:
diff changeset
   931
	$post_title = esc_attr($_post->post_title);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   932
0d28b7c10758 First commit
ymh
parents:
diff changeset
   933
	if ( $text ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   934
		$link_text = esc_attr($text);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   935
	} elseif ( ( is_int($size) && $size != 0 ) or ( is_string($size) && $size != 'none' ) or $size != false ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   936
		$link_text = wp_get_attachment_image($id, $size, $icon);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   937
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   938
0d28b7c10758 First commit
ymh
parents:
diff changeset
   939
	if( trim($link_text) == '' )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   940
		$link_text = $_post->post_title;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   941
0d28b7c10758 First commit
ymh
parents:
diff changeset
   942
	return apply_filters( 'wp_get_attachment_link', "<a href='$url' title='$post_title'>$link_text</a>", $id, $size, $permalink, $icon, $text );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   943
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   944
0d28b7c10758 First commit
ymh
parents:
diff changeset
   945
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   946
 * Retrieve HTML content of attachment image with link.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   947
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   948
 * @since 2.0.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
   949
 * @deprecated Use {@link wp_get_attachment_link()}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   950
 * @see wp_get_attachment_link() Use instead.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   951
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   952
 * @param int $id Optional. Post ID.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   953
 * @param bool $fullsize Optional, default is false. Whether to use full size image.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   954
 * @param array $max_dims Optional. Max image dimensions.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   955
 * @param bool $permalink Optional, default is false. Whether to include permalink to image.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   956
 * @return string
0d28b7c10758 First commit
ymh
parents:
diff changeset
   957
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   958
function get_the_attachment_link($id = 0, $fullsize = false, $max_dims = false, $permalink = false) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   959
	$id = (int) $id;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   960
	$_post = & get_post($id);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   961
0d28b7c10758 First commit
ymh
parents:
diff changeset
   962
	if ( ('attachment' != $_post->post_type) || !$url = wp_get_attachment_url($_post->ID) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   963
		return __('Missing Attachment');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   964
0d28b7c10758 First commit
ymh
parents:
diff changeset
   965
	if ( $permalink )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   966
		$url = get_attachment_link($_post->ID);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   967
0d28b7c10758 First commit
ymh
parents:
diff changeset
   968
	$post_title = esc_attr($_post->post_title);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   969
0d28b7c10758 First commit
ymh
parents:
diff changeset
   970
	$innerHTML = get_attachment_innerHTML($_post->ID, $fullsize, $max_dims);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   971
	return "<a href='$url' title='$post_title'>$innerHTML</a>";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   972
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   973
0d28b7c10758 First commit
ymh
parents:
diff changeset
   974
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   975
 * Retrieve icon URL and Path.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   976
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   977
 * @since 2.1.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
   978
 * @deprecated Use {@link wp_get_attachment_image_src()}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   979
 * @see wp_get_attachment_image_src() Use instead.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   980
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   981
 * @param int $id Optional. Post ID.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   982
 * @param bool $fullsize Optional, default to false. Whether to have full image.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   983
 * @return array Icon URL and full path to file, respectively.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   984
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   985
function get_attachment_icon_src( $id = 0, $fullsize = false ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   986
	$id = (int) $id;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   987
	if ( !$post = & get_post($id) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   988
		return false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   989
0d28b7c10758 First commit
ymh
parents:
diff changeset
   990
	$file = get_attached_file( $post->ID );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   991
0d28b7c10758 First commit
ymh
parents:
diff changeset
   992
	if ( !$fullsize && $src = wp_get_attachment_thumb_url( $post->ID ) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   993
		// We have a thumbnail desired, specified and existing
0d28b7c10758 First commit
ymh
parents:
diff changeset
   994
0d28b7c10758 First commit
ymh
parents:
diff changeset
   995
		$src_file = basename($src);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   996
		$class = 'attachmentthumb';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   997
	} elseif ( wp_attachment_is_image( $post->ID ) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   998
		// We have an image without a thumbnail
0d28b7c10758 First commit
ymh
parents:
diff changeset
   999
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1000
		$src = wp_get_attachment_url( $post->ID );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1001
		$src_file = & $file;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1002
		$class = 'attachmentimage';
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1003
	} elseif ( $src = wp_mime_type_icon( $post->ID ) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1004
		// No thumb, no image. We'll look for a mime-related icon instead.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1005
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1006
		$icon_dir = apply_filters( 'icon_dir', get_template_directory() . '/images' );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1007
		$src_file = $icon_dir . '/' . basename($src);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1008
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1009
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1010
	if ( !isset($src) || !$src )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1011
		return false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1012
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1013
	return array($src, $src_file);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1014
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1015
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1016
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1017
 * Retrieve HTML content of icon attachment image element.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1018
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1019
 * @since 2.0.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1020
 * @deprecated Use {@link wp_get_attachment_image()}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1021
 * @see wp_get_attachment_image() Use instead of.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1022
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1023
 * @param int $id Optional. Post ID.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1024
 * @param bool $fullsize Optional, default to false. Whether to have full size image.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1025
 * @param array $max_dims Optional. Dimensions of image.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1026
 * @return string HTML content.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1027
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1028
function get_attachment_icon( $id = 0, $fullsize = false, $max_dims = false ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1029
	$id = (int) $id;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1030
	if ( !$post = & get_post($id) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1031
		return false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1032
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1033
	if ( !$src = get_attachment_icon_src( $post->ID, $fullsize ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1034
		return false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1035
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1036
	list($src, $src_file) = $src;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1037
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1038
	// Do we need to constrain the image?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1039
	if ( ($max_dims = apply_filters('attachment_max_dims', $max_dims)) && file_exists($src_file) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1040
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1041
		$imagesize = getimagesize($src_file);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1042
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1043
		if (($imagesize[0] > $max_dims[0]) || $imagesize[1] > $max_dims[1] ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1044
			$actual_aspect = $imagesize[0] / $imagesize[1];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1045
			$desired_aspect = $max_dims[0] / $max_dims[1];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1046
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1047
			if ( $actual_aspect >= $desired_aspect ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1048
				$height = $actual_aspect * $max_dims[0];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1049
				$constraint = "width='{$max_dims[0]}' ";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1050
				$post->iconsize = array($max_dims[0], $height);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1051
			} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1052
				$width = $max_dims[1] / $actual_aspect;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1053
				$constraint = "height='{$max_dims[1]}' ";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1054
				$post->iconsize = array($width, $max_dims[1]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1055
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1056
		} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1057
			$post->iconsize = array($imagesize[0], $imagesize[1]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1058
			$constraint = '';
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1059
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1060
	} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1061
		$constraint = '';
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1062
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1063
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1064
	$post_title = esc_attr($post->post_title);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1065
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1066
	$icon = "<img src='$src' title='$post_title' alt='$post_title' $constraint/>";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1067
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1068
	return apply_filters( 'attachment_icon', $icon, $post->ID );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1069
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1070
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1071
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1072
 * Retrieve HTML content of image element.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1073
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1074
 * @since 2.0.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1075
 * @deprecated Use {@link wp_get_attachment_image()}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1076
 * @see wp_get_attachment_image() Use instead.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1077
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1078
 * @param int $id Optional. Post ID.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1079
 * @param bool $fullsize Optional, default to false. Whether to have full size image.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1080
 * @param array $max_dims Optional. Dimensions of image.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1081
 * @return string
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1082
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1083
function get_attachment_innerHTML($id = 0, $fullsize = false, $max_dims = false) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1084
	$id = (int) $id;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1085
	if ( !$post = & get_post($id) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1086
		return false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1087
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1088
	if ( $innerHTML = get_attachment_icon($post->ID, $fullsize, $max_dims))
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1089
		return $innerHTML;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1090
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1091
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1092
	$innerHTML = esc_attr($post->post_title);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1093
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1094
	return apply_filters('attachment_innerHTML', $innerHTML, $post->ID);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1095
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1096
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1097
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1098
 * Wrap attachment in <<p>> element before content.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1099
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1100
 * @since 2.0.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1101
 * @uses apply_filters() Calls 'prepend_attachment' hook on HTML content.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1102
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1103
 * @param string $content
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1104
 * @return string
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1105
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1106
function prepend_attachment($content) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1107
	global $post;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1108
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1109
	if ( empty($post->post_type) || $post->post_type != 'attachment' )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1110
		return $content;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1111
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1112
	$p = '<p class="attachment">';
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1113
	// show the medium sized image representation of the attachment if available, and link to the raw file
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1114
	$p .= wp_get_attachment_link(0, 'medium', false);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1115
	$p .= '</p>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1116
	$p = apply_filters('prepend_attachment', $p);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1117
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1118
	return "$p\n$content";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1119
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1120
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1121
//
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1122
// Misc
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1123
//
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1124
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1125
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1126
 * Retrieve protected post password form content.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1127
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1128
 * @since 1.0.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1129
 * @uses apply_filters() Calls 'the_password_form' filter on output.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1130
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1131
 * @return string HTML content for password form for password protected post.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1132
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1133
function get_the_password_form() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1134
	global $post;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1135
	$label = 'pwbox-'.(empty($post->ID) ? rand() : $post->ID);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1136
	$output = '<form action="' . get_option('siteurl') . '/wp-pass.php" method="post">
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1137
	<p>' . __("This post is password protected. To view it please enter your password below:") . '</p>
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1138
	<p><label for="' . $label . '">' . __("Password:") . ' <input name="post_password" id="' . $label . '" type="password" size="20" /></label> <input type="submit" name="Submit" value="' . esc_attr__("Submit") . '" /></p>
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1139
	</form>
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1140
	';
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1141
	return apply_filters('the_password_form', $output);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1142
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1143
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1144
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1145
 * Whether currently in a page template.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1146
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1147
 * This template tag allows you to determine whether or not you are in a page
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1148
 * template. You can optional provide a template name and then the check will be
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1149
 * specific to that template.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1150
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1151
 * @since 2.5.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1152
 * @uses $wp_query
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1153
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1154
 * @param string $template The specific template name if specific matching is required.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1155
 * @return bool False on failure, true if success.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1156
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1157
function is_page_template($template = '') {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1158
	if (!is_page()) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1159
		return false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1160
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1161
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1162
	global $wp_query;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1163
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1164
	$page = $wp_query->get_queried_object();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1165
	$custom_fields = get_post_custom_values('_wp_page_template',$page->ID);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1166
	$page_template = $custom_fields[0];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1167
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1168
	// We have no argument passed so just see if a page_template has been specified
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1169
	if ( empty( $template ) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1170
		if (!empty( $page_template ) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1171
			return true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1172
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1173
	} elseif ( $template == $page_template) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1174
		return true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1175
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1176
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1177
	return false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1178
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1179
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1180
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1181
 * Retrieve formatted date timestamp of a revision (linked to that revisions's page).
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1182
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1183
 * @package WordPress
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1184
 * @subpackage Post_Revisions
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1185
 * @since 2.6.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1186
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1187
 * @uses date_i18n()
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1188
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1189
 * @param int|object $revision Revision ID or revision object.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1190
 * @param bool $link Optional, default is true. Link to revisions's page?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1191
 * @return string i18n formatted datetimestamp or localized 'Current Revision'.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1192
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1193
function wp_post_revision_title( $revision, $link = true ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1194
	if ( !$revision = get_post( $revision ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1195
		return $revision;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1196
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1197
	if ( !in_array( $revision->post_type, array( 'post', 'page', 'revision' ) ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1198
		return false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1199
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1200
	/* translators: revision date format, see http://php.net/date */
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1201
	$datef = _x( 'j F, Y @ G:i', 'revision date format');
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1202
	/* translators: 1: date */
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1203
	$autosavef = __( '%1$s [Autosave]' );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1204
	/* translators: 1: date */
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1205
	$currentf  = __( '%1$s [Current Revision]' );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1206
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1207
	$date = date_i18n( $datef, strtotime( $revision->post_modified_gmt . ' +0000' ) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1208
	if ( $link && current_user_can( 'edit_post', $revision->ID ) && $link = get_edit_post_link( $revision->ID ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1209
		$date = "<a href='$link'>$date</a>";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1210
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1211
	if ( !wp_is_post_revision( $revision ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1212
		$date = sprintf( $currentf, $date );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1213
	elseif ( wp_is_post_autosave( $revision ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1214
		$date = sprintf( $autosavef, $date );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1215
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1216
	return $date;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1217
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1218
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1219
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1220
 * Display list of a post's revisions.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1221
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1222
 * Can output either a UL with edit links or a TABLE with diff interface, and
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1223
 * restore action links.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1224
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1225
 * Second argument controls parameters:
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1226
 *   (bool)   parent : include the parent (the "Current Revision") in the list.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1227
 *   (string) format : 'list' or 'form-table'.  'list' outputs UL, 'form-table'
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1228
 *                     outputs TABLE with UI.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1229
 *   (int)    right  : what revision is currently being viewed - used in
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1230
 *                     form-table format.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1231
 *   (int)    left   : what revision is currently being diffed against right -
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1232
 *                     used in form-table format.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1233
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1234
 * @package WordPress
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1235
 * @subpackage Post_Revisions
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1236
 * @since 2.6.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1237
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1238
 * @uses wp_get_post_revisions()
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1239
 * @uses wp_post_revision_title()
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1240
 * @uses get_edit_post_link()
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1241
 * @uses get_the_author_meta()
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1242
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1243
 * @todo split into two functions (list, form-table) ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1244
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1245
 * @param int|object $post_id Post ID or post object.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1246
 * @param string|array $args See description {@link wp_parse_args()}.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1247
 * @return null
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1248
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1249
function wp_list_post_revisions( $post_id = 0, $args = null ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1250
	if ( !$post = get_post( $post_id ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1251
		return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1252
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1253
	$defaults = array( 'parent' => false, 'right' => false, 'left' => false, 'format' => 'list', 'type' => 'all' );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1254
	extract( wp_parse_args( $args, $defaults ), EXTR_SKIP );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1255
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1256
	switch ( $type ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1257
	case 'autosave' :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1258
		if ( !$autosave = wp_get_post_autosave( $post->ID ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1259
			return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1260
		$revisions = array( $autosave );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1261
		break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1262
	case 'revision' : // just revisions - remove autosave later
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1263
	case 'all' :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1264
	default :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1265
		if ( !$revisions = wp_get_post_revisions( $post->ID ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1266
			return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1267
		break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1268
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1269
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1270
	/* translators: post revision: 1: when, 2: author name */
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1271
	$titlef = _x( '%1$s by %2$s', 'post revision' );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1272
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1273
	if ( $parent )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1274
		array_unshift( $revisions, $post );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1275
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1276
	$rows = '';
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1277
	$class = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1278
	$can_edit_post = current_user_can( 'edit_post', $post->ID );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1279
	foreach ( $revisions as $revision ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1280
		if ( !current_user_can( 'read_post', $revision->ID ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1281
			continue;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1282
		if ( 'revision' === $type && wp_is_post_autosave( $revision ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1283
			continue;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1284
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1285
		$date = wp_post_revision_title( $revision );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1286
		$name = get_the_author_meta( 'display_name', $revision->post_author );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1287
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1288
		if ( 'form-table' == $format ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1289
			if ( $left )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1290
				$left_checked = $left == $revision->ID ? ' checked="checked"' : '';
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1291
			else
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1292
				$left_checked = $right_checked ? ' checked="checked"' : ''; // [sic] (the next one)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1293
			$right_checked = $right == $revision->ID ? ' checked="checked"' : '';
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1294
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1295
			$class = $class ? '' : " class='alternate'";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1296
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1297
			if ( $post->ID != $revision->ID && $can_edit_post )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1298
				$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>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1299
			else
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1300
				$actions = '';
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1301
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1302
			$rows .= "<tr$class>\n";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1303
			$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";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1304
			$rows .= "\t<td>$date</td>\n";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1305
			$rows .= "\t<td>$name</td>\n";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1306
			$rows .= "\t<td class='action-links'>$actions</td>\n";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1307
			$rows .= "</tr>\n";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1308
		} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1309
			$title = sprintf( $titlef, $date, $name );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1310
			$rows .= "\t<li>$title</li>\n";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1311
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1312
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1313
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1314
	if ( 'form-table' == $format ) : ?>
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1315
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1316
<form action="revision.php" method="get">
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1317
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1318
<div class="tablenav">
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1319
	<div class="alignleft">
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1320
		<input type="submit" class="button-secondary" value="<?php esc_attr_e( 'Compare Revisions' ); ?>" />
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1321
		<input type="hidden" name="action" value="diff" />
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1322
	</div>
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1323
</div>
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1324
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1325
<br class="clear" />
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1326
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1327
<table class="widefat post-revisions" cellspacing="0">
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1328
	<col />
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1329
	<col style="width: 33%" />
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1330
	<col style="width: 33%" />
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1331
	<col style="width: 33%" />
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1332
<thead>
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1333
<tr>
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1334
	<th scope="col"></th>
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1335
	<th scope="col"><?php _e( 'Date Created' ); ?></th>
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1336
	<th scope="col"><?php _e( 'Author' ); ?></th>
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1337
	<th scope="col" class="action-links"><?php _e( 'Actions' ); ?></th>
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1338
</tr>
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1339
</thead>
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1340
<tbody>
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1341
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1342
<?php echo $rows; ?>
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1343
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1344
</tbody>
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1345
</table>
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1346
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1347
</form>
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1348
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1349
<?php
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1350
	else :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1351
		echo "<ul class='post-revisions'>\n";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1352
		echo $rows;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1353
		echo "</ul>";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1354
	endif;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1355
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1356
}