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