X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/f9001779751f83dc8a10e478bfecb4d8dd5f964c..61343b82c4f0da4c68e4c6373daafff4a81efdd1:/wp-includes/general-template.php diff --git a/wp-includes/general-template.php b/wp-includes/general-template.php index 19194f2f..b5867624 100644 --- a/wp-includes/general-template.php +++ b/wp-includes/general-template.php @@ -25,10 +25,11 @@ function get_header( $name = null ) { do_action( 'get_header', $name ); $templates = array(); - if ( isset($name) ) + $name = (string) $name; + if ( '' !== $name ) $templates[] = "header-{$name}.php"; - $templates[] = "header.php"; + $templates[] = 'header.php'; // Backward compat code will be removed in a future release if ('' == locate_template($templates, true)) @@ -54,10 +55,11 @@ function get_footer( $name = null ) { do_action( 'get_footer', $name ); $templates = array(); - if ( isset($name) ) + $name = (string) $name; + if ( '' !== $name ) $templates[] = "footer-{$name}.php"; - $templates[] = "footer.php"; + $templates[] = 'footer.php'; // Backward compat code will be removed in a future release if ('' == locate_template($templates, true)) @@ -83,10 +85,11 @@ function get_sidebar( $name = null ) { do_action( 'get_sidebar', $name ); $templates = array(); - if ( isset($name) ) + $name = (string) $name; + if ( '' !== $name ) $templates[] = "sidebar-{$name}.php"; - $templates[] = "sidebar.php"; + $templates[] = 'sidebar.php'; // Backward compat code will be removed in a future release if ('' == locate_template($templates, true)) @@ -106,12 +109,12 @@ function get_sidebar( $name = null ) { * The template is included using require, not require_once, so you may include the * same template part multiple times. * - * For the parameter, if the file is called "{slug}-special.php" then specify + * For the $name parameter, if the file is called "{slug}-special.php" then specify * "special". * * @uses locate_template() * @since 3.0.0 - * @uses do_action() Calls 'get_template_part{$slug}' action. + * @uses do_action() Calls 'get_template_part_{$slug}' action. * * @param string $slug The slug name for the generic template. * @param string $name The name of the specialised template. @@ -120,7 +123,8 @@ function get_template_part( $slug, $name = null ) { do_action( "get_template_part_{$slug}", $slug, $name ); $templates = array(); - if ( isset($name) ) + $name = (string) $name; + if ( '' !== $name ) $templates[] = "{$slug}-{$name}.php"; $templates[] = "{$slug}.php"; @@ -141,33 +145,56 @@ function get_template_part( $slug, $name = null ) { * form into the sidebar and also by the search widget in WordPress. * * There is also an action that is called whenever the function is run called, - * 'get_search_form'. This can be useful for outputting JavaScript that the + * 'pre_get_search_form'. This can be useful for outputting JavaScript that the * search relies on or various formatting that applies to the beginning of the * search. To give a few examples of what it can be used for. * * @since 2.7.0 + * @uses apply_filters() Calls 'search_form_format' filter to determine which type to use for the search field. + * If set to 'html5', it changes to search input type and adds placeholder text. + * * @param boolean $echo Default to echo and not return the form. + * @return string|null String when retrieving, null when displaying or if searchform.php exists. */ -function get_search_form($echo = true) { - do_action( 'get_search_form' ); +function get_search_form( $echo = true ) { + do_action( 'pre_get_search_form' ); + + $format = current_theme_supports( 'html5', 'search-form' ) ? 'html5' : 'xhtml'; + $format = apply_filters( 'search_form_format', $format ); - $search_form_template = locate_template('searchform.php'); + $search_form_template = locate_template( 'searchform.php' ); if ( '' != $search_form_template ) { - require($search_form_template); - return; + ob_start(); + require( $search_form_template ); + $form = ob_get_clean(); + } else { + if ( 'html5' == $format ) { + $form = '
'; + } else { + $form = ''; + } } - $form = ''; + $result = apply_filters( 'get_search_form', $form ); + if ( null === $result ) + $result = $form; if ( $echo ) - echo apply_filters('get_search_form', $form); + echo $result; else - return apply_filters('get_search_form', $form); + return $result; } /** @@ -181,6 +208,7 @@ function get_search_form($echo = true) { * * @param string $redirect Optional path to redirect to on login/logout. * @param boolean $echo Default to echo and not return the link. + * @return string|null String when retrieving, null when displaying. */ function wp_loginout($redirect = '', $echo = true) { if ( ! is_user_logged_in() ) @@ -197,14 +225,15 @@ function wp_loginout($redirect = '', $echo = true) { /** * Returns the Log Out URL. * - * Returns the URL that allows the user to log out of the site + * Returns the URL that allows the user to log out of the site. * * @since 2.7.0 - * @uses wp_nonce_url() To protect against CSRF - * @uses site_url() To generate the log in URL - * @uses apply_filters() calls 'logout_url' hook on final logout url + * @uses wp_nonce_url() To protect against CSRF. + * @uses site_url() To generate the log out URL. + * @uses apply_filters() calls 'logout_url' hook on final logout URL. * * @param string $redirect Path to redirect to on logout. + * @return string A log out URL. */ function wp_logout_url($redirect = '') { $args = array( 'action' => 'logout' ); @@ -221,15 +250,15 @@ function wp_logout_url($redirect = '') { /** * Returns the Log In URL. * - * Returns the URL that allows the user to log in to the site + * Returns the URL that allows the user to log in to the site. * * @since 2.7.0 - * @uses site_url() To generate the log in URL - * @uses apply_filters() calls 'login_url' hook on final login url + * @uses site_url() To generate the log in URL. + * @uses apply_filters() calls 'login_url' hook on final login URL. * * @param string $redirect Path to redirect to on login. * @param bool $force_reauth Whether to force reauthorization, even if a cookie is present. Default is false. - * @return string A log in url + * @return string A log in URL. */ function wp_login_url($redirect = '', $force_reauth = false) { $login_url = site_url('wp-login.php', 'login'); @@ -243,48 +272,64 @@ function wp_login_url($redirect = '', $force_reauth = false) { return apply_filters('login_url', $login_url, $redirect); } +/** + * Returns the user registration URL. + * + * Returns the URL that allows the user to register on the site. + * + * @since 3.6.0 + * @uses site_url() To generate the registration URL. + * @uses apply_filters() calls 'register_url' hook on final URL. + * + * @return string + */ +function wp_registration_url() { + return apply_filters( 'register_url', site_url( 'wp-login.php?action=register', 'login' ) ); +} + /** * Provides a simple login form for use anywhere within WordPress. By default, it echoes * the HTML immediately. Pass array('echo'=>false) to return the string instead. * * @since 3.0.0 - * @param array $args Configuration options to modify the form output - * @return Void, or string containing the form + * @param array $args Configuration options to modify the form output. + * @return string|null String when retrieving, null when displaying. */ function wp_login_form( $args = array() ) { - $defaults = array( 'echo' => true, - 'redirect' => site_url( $_SERVER['REQUEST_URI'] ), // Default redirect is back to the current page - 'form_id' => 'loginform', - 'label_username' => __( 'Username' ), - 'label_password' => __( 'Password' ), - 'label_remember' => __( 'Remember Me' ), - 'label_log_in' => __( 'Log In' ), - 'id_username' => 'user_login', - 'id_password' => 'user_pass', - 'id_remember' => 'rememberme', - 'id_submit' => 'wp-submit', - 'remember' => true, - 'value_username' => '', - 'value_remember' => false, // Set this to true to default the "Remember me" checkbox to checked - ); + $defaults = array( + 'echo' => true, + 'redirect' => ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], // Default redirect is back to the current page + 'form_id' => 'loginform', + 'label_username' => __( 'Username' ), + 'label_password' => __( 'Password' ), + 'label_remember' => __( 'Remember Me' ), + 'label_log_in' => __( 'Log In' ), + 'id_username' => 'user_login', + 'id_password' => 'user_pass', + 'id_remember' => 'rememberme', + 'id_submit' => 'wp-submit', + 'remember' => true, + 'value_username' => '', + 'value_remember' => false, // Set this to true to default the "Remember me" checkbox to checked + ); $args = wp_parse_args( $args, apply_filters( 'login_form_defaults', $defaults ) ); $form = ' - '; @@ -305,15 +350,16 @@ function wp_login_form( $args = array() ) { * @uses apply_filters() calls 'lostpassword_url' hook on the lostpassword url * * @param string $redirect Path to redirect to on login. + * @return string Lost password URL. */ -function wp_lostpassword_url($redirect = '') { +function wp_lostpassword_url( $redirect = '' ) { $args = array( 'action' => 'lostpassword' ); if ( !empty($redirect) ) { $args['redirect_to'] = $redirect; } - $lostpassword_url = add_query_arg($args, site_url('wp-login.php', 'login')); - return apply_filters('lostpassword_url', $lostpassword_url, $redirect); + $lostpassword_url = add_query_arg( $args, network_site_url('wp-login.php', 'login') ); + return apply_filters( 'lostpassword_url', $lostpassword_url, $redirect ); } /** @@ -328,12 +374,13 @@ function wp_lostpassword_url($redirect = '') { * @param string $before Text to output before the link (defaults to'; if ( in_array($day, $daywithpost) ) // any posts today? - $calendar_output .= '$day"; + $calendar_output .= '$day"; else $calendar_output .= $day; $calendar_output .= ' | '; @@ -1321,8 +1351,7 @@ function allowed_tags() { * @since 1.0.0 */ function the_date_xml() { - global $post; - echo mysql2date('Y-m-d', $post->post_date, false); + echo mysql2date( 'Y-m-d', get_post()->post_date, false ); } /** @@ -1377,7 +1406,7 @@ function the_date( $d = '', $before = '', $after = '', $echo = true ) { * @return string|null Null if displaying, string if retrieving. */ function get_the_date( $d = '' ) { - global $post; + $post = get_post(); $the_date = ''; if ( '' == $d ) @@ -1538,8 +1567,8 @@ function get_post_modified_time( $d = 'U', $gmt = false, $post = null, $translat * @uses $post */ function the_weekday() { - global $wp_locale, $post; - $the_weekday = $wp_locale->get_weekday(mysql2date('w', $post->post_date, false)); + global $wp_locale; + $the_weekday = $wp_locale->get_weekday( mysql2date( 'w', get_post()->post_date, false ) ); $the_weekday = apply_filters('the_weekday', $the_weekday); echo $the_weekday; } @@ -1556,11 +1585,11 @@ function the_weekday() { * @param string $after Optional Output after the date. */ function the_weekday_date($before='',$after='') { - global $wp_locale, $post, $day, $previousweekday; + global $wp_locale, $currentday, $previousweekday; $the_weekday_date = ''; if ( $currentday != $previousweekday ) { $the_weekday_date .= $before; - $the_weekday_date .= $wp_locale->get_weekday(mysql2date('w', $post->post_date, false)); + $the_weekday_date .= $wp_locale->get_weekday( mysql2date( 'w', get_post()->post_date, false ) ); $the_weekday_date .= $after; $previousweekday = $currentday; } @@ -1604,7 +1633,7 @@ function feed_links( $args = array() ) { 'separator' => _x('»', 'feed link'), /* translators: 1: blog title, 2: separator (raquo) */ 'feedtitle' => __('%1$s %2$s Feed'), - /* translators: %s: blog title, 2: separator (raquo) */ + /* translators: 1: blog title, 2: separator (raquo) */ 'comstitle' => __('%1$s %2$s Comments Feed'), ); @@ -1635,39 +1664,45 @@ function feed_links_extra( $args = array() ) { 'authortitle' => __('%1$s %2$s Posts by %3$s Feed'), /* translators: 1: blog name, 2: separator(raquo), 3: search phrase */ 'searchtitle' => __('%1$s %2$s Search Results for “%3$s” Feed'), + /* translators: 1: blog name, 2: separator(raquo), 3: post type name */ + 'posttypetitle' => __('%1$s %2$s %3$s Feed'), ); $args = wp_parse_args( $args, $defaults ); if ( is_single() || is_page() ) { - $post = &get_post( $id = 0 ); + $id = 0; + $post = get_post( $id ); if ( comments_open() || pings_open() || $post->comment_count > 0 ) { - $title = esc_attr(sprintf( $args['singletitle'], get_bloginfo('name'), $args['separator'], esc_html( get_the_title() ) )); + $title = sprintf( $args['singletitle'], get_bloginfo('name'), $args['separator'], esc_html( get_the_title() ) ); $href = get_post_comments_feed_link( $post->ID ); } } elseif ( is_category() ) { $term = get_queried_object(); - $title = esc_attr(sprintf( $args['cattitle'], get_bloginfo('name'), $args['separator'], $term->name )); + $title = sprintf( $args['cattitle'], get_bloginfo('name'), $args['separator'], $term->name ); $href = get_category_feed_link( $term->term_id ); } elseif ( is_tag() ) { $term = get_queried_object(); - $title = esc_attr(sprintf( $args['tagtitle'], get_bloginfo('name'), $args['separator'], $term->name )); + $title = sprintf( $args['tagtitle'], get_bloginfo('name'), $args['separator'], $term->name ); $href = get_tag_feed_link( $term->term_id ); } elseif ( is_author() ) { $author_id = intval( get_query_var('author') ); - $title = esc_attr(sprintf( $args['authortitle'], get_bloginfo('name'), $args['separator'], get_the_author_meta( 'display_name', $author_id ) )); + $title = sprintf( $args['authortitle'], get_bloginfo('name'), $args['separator'], get_the_author_meta( 'display_name', $author_id ) ); $href = get_author_feed_link( $author_id ); } elseif ( is_search() ) { - $title = esc_attr(sprintf( $args['searchtitle'], get_bloginfo('name'), $args['separator'], get_search_query( false ) )); + $title = sprintf( $args['searchtitle'], get_bloginfo('name'), $args['separator'], get_search_query( false ) ); $href = get_search_feed_link(); + } elseif ( is_post_type_archive() ) { + $title = sprintf( $args['posttypetitle'], get_bloginfo('name'), $args['separator'], post_type_archive_title( '', false ) ); + $href = get_post_type_archive_feed_link( get_queried_object()->name ); } if ( isset($title) && isset($href) ) - echo '' . "\n"; + echo '' . "\n"; } /** @@ -1695,14 +1730,29 @@ function wlwmanifest_link() { * Display a noindex meta tag if required by the blog configuration. * * If a blog is marked as not being public then the noindex meta tag will be - * output to tell web robots not to index the page content. + * output to tell web robots not to index the page content. Add this to the wp_head action. + * Typical usage is as a wp_head callback. add_action( 'wp_head', 'noindex' ); + * + * @see wp_no_robots * * @since 2.1.0 */ function noindex() { // If the blog is not public, tell robots to go away. if ( '0' == get_option('blog_public') ) - echo "\n"; + wp_no_robots(); +} + +/** + * Display a noindex meta tag. + * + * Outputs a noindex meta tag that tells web robots not to index the page content. + * Typical usage is as a wp_head callback. add_action( 'wp_head', 'wp_no_robots' ); + * + * @since 3.3.0 + */ +function wp_no_robots() { + echo "\n"; } /** @@ -1732,17 +1782,17 @@ function rich_edit_exists() { * @return bool */ function user_can_richedit() { - global $wp_rich_edit, $pagenow, $is_iphone; - - if ( !isset( $wp_rich_edit) ) { - if ( get_user_option( 'rich_editing' ) == 'true' && - !$is_iphone && // this includes all Safari mobile browsers - ( ( preg_match( '!AppleWebKit/(\d+)!', $_SERVER['HTTP_USER_AGENT'], $match ) && intval($match[1]) >= 420 ) || - !preg_match( '!opera[ /][2-8]|konqueror|safari!i', $_SERVER['HTTP_USER_AGENT'] ) ) - && 'comment.php' != $pagenow ) { - $wp_rich_edit = true; - } else { - $wp_rich_edit = false; + global $wp_rich_edit, $is_gecko, $is_opera, $is_safari, $is_chrome, $is_IE; + + if ( !isset($wp_rich_edit) ) { + $wp_rich_edit = false; + + if ( get_user_option( 'rich_editing' ) == 'true' || ! is_user_logged_in() ) { // default to 'true' for logged out users + if ( $is_safari ) { + $wp_rich_edit = ! wp_is_mobile() || ( preg_match( '!AppleWebKit/(\d+)!', $_SERVER['HTTP_USER_AGENT'], $match ) && intval( $match[1] ) >= 534 ); + } elseif ( $is_gecko || $is_chrome || $is_IE || ( $is_opera && !wp_is_mobile() ) ) { + $wp_rich_edit = true; + } } } @@ -1753,7 +1803,7 @@ function user_can_richedit() { * Find out which editor should be displayed by default. * * Works out which of the two editors to display as the current editor for a - * user. + * user. The 'html' setting is for the "Text" editor tab. * * @since 2.5.0 * @@ -1769,78 +1819,29 @@ function wp_default_editor() { } /** - * Display visual editor forms: TinyMCE, or HTML, or both. + * Renders an editor. * - * The amount of rows the text area will have for the content has to be between - * 3 and 100 or will default at 12. There is only one option used for all users, - * named 'default_post_edit_rows'. + * Using this function is the proper way to output all needed components for both TinyMCE and Quicktags. + * _WP_Editors should not be used directly. See http://core.trac.wordpress.org/ticket/17144. * - * If the user can not use the rich editor (TinyMCE), then the switch button - * will not be displayed. + * NOTE: Once initialized the TinyMCE editor cannot be safely moved in the DOM. For that reason + * running wp_editor() inside of a metabox is not a good idea unless only Quicktags is used. + * On the post edit screen several actions can be used to include additional editors + * containing TinyMCE: 'edit_page_form', 'edit_form_advanced' and 'dbx_post_sidebar'. + * See http://core.trac.wordpress.org/ticket/19173 for more information. * - * @since 2.1.0 + * @see wp-includes/class-wp-editor.php + * @since 3.3.0 * - * @param string $content Textarea content. - * @param string $id Optional, default is 'content'. HTML ID attribute value. - * @param string $prev_id Optional, default is 'title'. HTML ID name for switching back and forth between visual editors. - * @param bool $media_buttons Optional, default is true. Whether to display media buttons. - * @param int $tab_index Optional, default is 2. Tabindex for textarea element. + * @param string $content Initial content for the editor. + * @param string $editor_id HTML ID attribute value for the textarea and TinyMCE. Can only be /[a-z]+/. + * @param array $settings See _WP_Editors::editor(). */ -function the_editor($content, $id = 'content', $prev_id = 'title', $media_buttons = true, $tab_index = 2) { - $rows = get_option('default_post_edit_rows'); - if (($rows < 3) || ($rows > 100)) - $rows = 12; - - if ( !current_user_can( 'upload_files' ) ) - $media_buttons = false; - - $richedit = user_can_richedit(); - $class = ''; - - if ( $richedit || $media_buttons ) { ?> -