X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/11be8dc178e77d0b46189bbd8e33a216a9b90942..67f24b02807a1ff7e9d1a97453ed84c404c0af0f:/wp-includes/post-template.php diff --git a/wp-includes/post-template.php b/wp-includes/post-template.php index 2ff0e7db..c473bdcc 100644 --- a/wp-includes/post-template.php +++ b/wp-includes/post-template.php @@ -63,7 +63,7 @@ function the_title($before = '', $after = '', $echo = true) { * an array. See the function for what can be override in the $args parameter. * * The title before it is displayed will have the tags stripped and {@link - * attribute_escape()} before it is passed to the user or displayed. The default + * esc_attr()} before it is passed to the user or displayed. The default * as with {@link the_title()}, is to display the title. * * @since 2.3.0 @@ -83,7 +83,7 @@ function the_title_attribute( $args = '' ) { $title = $before . $title . $after; - $title = attribute_escape(strip_tags($title)); + $title = esc_attr(strip_tags($title)); if ( $echo ) echo $title; @@ -109,12 +109,15 @@ function get_the_title( $id = 0 ) { $title = $post->post_title; if ( !is_admin() ) { - if ( !empty($post->post_password) ) - $title = sprintf(__('Protected: %s'), $title); - else if ( isset($post->post_status) && 'private' == $post->post_status ) - $title = sprintf(__('Private: %s'), $title); + if ( !empty($post->post_password) ) { + $protected_title_format = apply_filters('protected_title_format', __('Protected: %s')); + $title = sprintf($protected_title_format, $title); + } else if ( isset($post->post_status) && 'private' == $post->post_status ) { + $private_title_format = apply_filters('private_title_format', __('Private: %s')); + $title = sprintf($private_title_format, $title); + } } - return apply_filters( 'the_title', $title ); + return apply_filters( 'the_title', $title, $post->ID ); } /** @@ -183,6 +186,7 @@ function get_the_content($more_link_text = null, $stripteaser = 0, $more_file = $more_link_text = __( '(more...)' ); $output = ''; + $hasTeaser = false; // If post password required and it doesn't match the cookie. if ( post_password_required($post) ) { @@ -203,22 +207,24 @@ function get_the_content($more_link_text = null, $stripteaser = 0, $more_file = $content = explode($matches[0], $content, 2); if ( !empty($matches[1]) && !empty($more_link_text) ) $more_link_text = strip_tags(wp_kses_no_null(trim($matches[1]))); + + $hasTeaser = true; } else { $content = array($content); } if ( (false !== strpos($post->post_content, '') && ((!$multipage) || ($page==1))) ) $stripteaser = 1; $teaser = $content[0]; - if ( ($more) && ($stripteaser) ) + if ( ($more) && ($stripteaser) && ($hasTeaser) ) $teaser = ''; $output .= $teaser; if ( count($content) > 1 ) { if ( $more ) { - $output .= ''.$content[1]; + $output .= '' . $content[1]; } else { - $output = balanceTags($output); if ( ! empty($more_link_text) ) - $output .= ' $more_link_text"; + $output .= apply_filters( 'the_content_more_link', ' $more_link_text", $more_link_text ); + $output = force_balance_tags($output); } } @@ -306,6 +312,7 @@ function get_post_class( $class = '', $post_id = null ) { $classes = array(); + $classes[] = 'post-' . $post->ID; $classes[] = $post->post_type; // sticky for Sticky Posts @@ -319,14 +326,14 @@ function get_post_class( $class = '', $post_id = null ) { foreach ( (array) get_the_category($post->ID) as $cat ) { if ( empty($cat->slug ) ) continue; - $classes[] = 'category-' . $cat->slug; + $classes[] = 'category-' . sanitize_html_class($cat->slug, $cat->cat_ID); } // Tags foreach ( (array) get_the_tags($post->ID) as $tag ) { if ( empty($tag->slug ) ) continue; - $classes[] = 'tag-' . $tag->slug; + $classes[] = 'tag-' . sanitize_html_class($tag->slug, $tag->term_id); } if ( !empty($class) ) { @@ -335,9 +342,149 @@ function get_post_class( $class = '', $post_id = null ) { $classes = array_merge($classes, $class); } + $classes = array_map('esc_attr', $classes); + return apply_filters('post_class', $classes, $class, $post_id); } +/** + * Display the classes for the body element. + * + * @since 2.8.0 + * + * @param string|array $class One or more classes to add to the class list. + */ +function body_class( $class = '' ) { + // Separates classes with a single space, collates classes for body element + echo 'class="' . join( ' ', get_body_class( $class ) ) . '"'; +} + +/** + * Retrieve the classes for the body element as an array. + * + * @since 2.8.0 + * + * @param string|array $class One or more classes to add to the class list. + * @return array Array of classes. + */ +function get_body_class( $class = '' ) { + global $wp_query, $wpdb, $current_user; + + $classes = array(); + + if ( 'rtl' == get_bloginfo('text_direction') ) + $classes[] = 'rtl'; + + if ( is_front_page() ) + $classes[] = 'home'; + if ( is_home() ) + $classes[] = 'blog'; + if ( is_archive() ) + $classes[] = 'archive'; + if ( is_date() ) + $classes[] = 'date'; + if ( is_search() ) + $classes[] = 'search'; + if ( is_paged() ) + $classes[] = 'paged'; + if ( is_attachment() ) + $classes[] = 'attachment'; + if ( is_404() ) + $classes[] = 'error404'; + + if ( is_single() ) { + $wp_query->post = $wp_query->posts[0]; + setup_postdata($wp_query->post); + + $postID = $wp_query->post->ID; + $classes[] = 'single postid-' . $postID; + + if ( is_attachment() ) { + $mime_type = get_post_mime_type(); + $mime_prefix = array( 'application/', 'image/', 'text/', 'audio/', 'video/', 'music/' ); + $classes[] = 'attachmentid-' . $postID; + $classes[] = 'attachment-' . str_replace($mime_prefix, '', $mime_type); + } + } elseif ( is_archive() ) { + if ( is_author() ) { + $author = $wp_query->get_queried_object(); + $classes[] = 'author'; + $classes[] = 'author-' . sanitize_html_class($author->user_nicename , $author->user_id); + } elseif ( is_category() ) { + $cat = $wp_query->get_queried_object(); + $classes[] = 'category'; + $classes[] = 'category-' . sanitize_html_class($cat->slug, $cat->cat_ID); + } elseif ( is_tag() ) { + $tags = $wp_query->get_queried_object(); + $classes[] = 'tag'; + $classes[] = 'tag-' . sanitize_html_class($tags->slug, $tags->term_id); + } + } elseif ( is_page() ) { + $classes[] = 'page'; + + $wp_query->post = $wp_query->posts[0]; + setup_postdata($wp_query->post); + + $pageID = $wp_query->post->ID; + + $classes[] = 'page-id-' . $pageID; + + if ( $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'page' LIMIT 1", $pageID) ) ) + $classes[] = 'page-parent'; + + if ( $wp_query->post->post_parent ) { + $classes[] = 'page-child'; + $classes[] = 'parent-pageid-' . $wp_query->post->post_parent; + } + if ( is_page_template() ) { + $classes[] = 'page-template'; + $classes[] = 'page-template-' . str_replace( '.php', '-php', get_post_meta( $pageID, '_wp_page_template', true ) ); + } + } elseif ( is_search() ) { + if ( !empty($wp_query->posts) ) + $classes[] = 'search-results'; + else + $classes[] = 'search-no-results'; + } + + if ( is_user_logged_in() ) + $classes[] = 'logged-in'; + + $page = $wp_query->get('page'); + + if ( !$page || $page < 2) + $page = $wp_query->get('paged'); + + if ( $page && $page > 1 ) { + $classes[] = 'paged-' . $page; + + if ( is_single() ) + $classes[] = 'single-paged-' . $page; + elseif ( is_page() ) + $classes[] = 'page-paged-' . $page; + elseif ( is_category() ) + $classes[] = 'category-paged-' . $page; + elseif ( is_tag() ) + $classes[] = 'tag-paged-' . $page; + elseif ( is_date() ) + $classes[] = 'date-paged-' . $page; + elseif ( is_author() ) + $classes[] = 'author-paged-' . $page; + elseif ( is_search() ) + $classes[] = 'search-paged-' . $page; + } + + if ( !empty($class) ) { + if ( !is_array( $class ) ) + $class = preg_split('#\s+#', $class); + $classes = array_merge($classes, $class); + } + + $classes = array_map('esc_attr', $classes); + + return apply_filters('body_class', $classes, $class); +} + /** * Whether post requires password and correct password has been provided. * @@ -563,13 +710,14 @@ function wp_dropdown_pages($args = '') { $pages = get_pages($r); $output = ''; + $name = esc_attr($name); if ( ! empty($pages) ) { $output = "\n"; } @@ -621,7 +769,7 @@ function wp_list_pages($args = '') { $output .= '