'G', 'U', * or php date format. Defaults to value * specified in 'time_format' option. */ echo apply_filters( 'the_modified_time', get_the_modified_time($d), $d ); } /** * Retrieve the time at which the post was last modified. * * @since 2.0.0 * @since 4.6.0 Added the `$post` parameter. * * @param string $d Optional. Format to use for retrieving the time the post * was modified. Either 'G', 'U', or php date format defaults * to the value specified in the time_format option. Default empty. * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default current post. * @return false|string Formatted date string or Unix timestamp. False on failure. */ function get_the_modified_time( $d = '', $post = null ) { $post = get_post( $post ); if ( ! $post ) { // For backward compatibility, failures go through the filter below. $the_time = false; } elseif ( empty( $d ) ) { $the_time = get_post_modified_time( get_option( 'time_format' ), false, $post, true ); } else { $the_time = get_post_modified_time( $d, false, $post, true ); } /** * Filters the localized time a post was last modified. * * @since 2.0.0 * @since 4.6.0 Added the `$post` parameter. * * @param string $the_time The formatted time. * @param string $d Format to use for retrieving the time the post was * written. Accepts 'G', 'U', or php date format. Defaults * to value specified in 'time_format' option. * @param WP_Post $post WP_Post object. */ return apply_filters( 'get_the_modified_time', $the_time, $d, $post ); } /** * Retrieve the time at which the post was last modified. * * @since 2.0.0 * * @param string $d Optional. Format to use for retrieving the time the post * was modified. Either 'G', 'U', or php date format. Default 'U'. * @param bool $gmt Optional. Whether to retrieve the GMT time. Default false. * @param int|WP_Post $post WP_Post object or ID. Default is global $post object. * @param bool $translate Whether to translate the time string. Default false. * @return string|int|false Formatted date string or Unix timestamp if `$id` is 'U' or 'G'. False on failure. */ function get_post_modified_time( $d = 'U', $gmt = false, $post = null, $translate = false ) { $post = get_post($post); if ( ! $post ) { return false; } if ( $gmt ) $time = $post->post_modified_gmt; else $time = $post->post_modified; $time = mysql2date($d, $time, $translate); /** * Filters the localized time a post was last modified. * * @since 2.8.0 * * @param string $time The formatted time. * @param string $d The date format. Accepts 'G', 'U', or php date format. Default 'U'. * @param bool $gmt Whether to return the GMT time. Default false. */ return apply_filters( 'get_post_modified_time', $time, $d, $gmt ); } /** * Display the weekday on which the post was written. * * @since 0.71 * * @global WP_Locale $wp_locale */ function the_weekday() { global $wp_locale; $the_weekday = $wp_locale->get_weekday( mysql2date( 'w', get_post()->post_date, false ) ); /** * Filters the weekday on which the post was written, for display. * * @since 0.71 * * @param string $the_weekday */ echo apply_filters( 'the_weekday', $the_weekday ); } /** * Display the weekday on which the post was written. * * Will only output the weekday if the current post's weekday is different from * the previous one output. * * @since 0.71 * * @global WP_Locale $wp_locale * @global string|int|bool $currentday * @global string|int|bool $previousweekday * * @param string $before Optional Output before the date. * @param string $after Optional Output after the date. */ function the_weekday_date($before='',$after='') { global $wp_locale, $currentday, $previousweekday; $the_weekday_date = ''; if ( $currentday != $previousweekday ) { $the_weekday_date .= $before; $the_weekday_date .= $wp_locale->get_weekday( mysql2date( 'w', get_post()->post_date, false ) ); $the_weekday_date .= $after; $previousweekday = $currentday; } /** * Filters the localized date on which the post was written, for display. * * @since 0.71 * * @param string $the_weekday_date * @param string $before The HTML to output before the date. * @param string $after The HTML to output after the date. */ $the_weekday_date = apply_filters( 'the_weekday_date', $the_weekday_date, $before, $after ); echo $the_weekday_date; } /** * Fire the wp_head action. * * See {@see 'wp_head'}. * * @since 1.2.0 */ function wp_head() { /** * Prints scripts or data in the head tag on the front end. * * @since 1.5.0 */ do_action( 'wp_head' ); } /** * Fire the wp_footer action. * * See {@see 'wp_footer'}. * * @since 1.5.1 */ function wp_footer() { /** * Prints scripts or data before the closing body tag on the front end. * * @since 1.5.1 */ do_action( 'wp_footer' ); } /** * Display the links to the general feeds. * * @since 2.8.0 * * @param array $args Optional arguments. */ function feed_links( $args = array() ) { if ( !current_theme_supports('automatic-feed-links') ) return; $defaults = array( /* translators: Separator between blog name and feed type in feed links */ 'separator' => _x('»', 'feed link'), /* translators: 1: blog title, 2: separator (raquo) */ 'feedtitle' => __('%1$s %2$s Feed'), /* translators: 1: blog title, 2: separator (raquo) */ 'comstitle' => __('%1$s %2$s Comments Feed'), ); $args = wp_parse_args( $args, $defaults ); /** * Filters whether to display the posts feed link. * * @since 4.4.0 * * @param bool $show Whether to display the posts feed link. Default true. */ if ( apply_filters( 'feed_links_show_posts_feed', true ) ) { echo '\n"; } /** * Filters whether to display the comments feed link. * * @since 4.4.0 * * @param bool $show Whether to display the comments feed link. Default true. */ if ( apply_filters( 'feed_links_show_comments_feed', true ) ) { echo '\n"; } } /** * Display the links to the extra feeds such as category feeds. * * @since 2.8.0 * * @param array $args Optional arguments. */ function feed_links_extra( $args = array() ) { $defaults = array( /* translators: Separator between blog name and feed type in feed links */ 'separator' => _x('»', 'feed link'), /* translators: 1: blog name, 2: separator(raquo), 3: post title */ 'singletitle' => __('%1$s %2$s %3$s Comments Feed'), /* translators: 1: blog name, 2: separator(raquo), 3: category name */ 'cattitle' => __('%1$s %2$s %3$s Category Feed'), /* translators: 1: blog name, 2: separator(raquo), 3: tag name */ 'tagtitle' => __('%1$s %2$s %3$s Tag Feed'), /* translators: 1: blog name, 2: separator(raquo), 3: term name, 4: taxonomy singular name */ 'taxtitle' => __('%1$s %2$s %3$s %4$s Feed'), /* translators: 1: blog name, 2: separator(raquo), 3: author name */ '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_singular() ) { $id = 0; $post = get_post( $id ); if ( comments_open() || pings_open() || $post->comment_count > 0 ) { $title = sprintf( $args['singletitle'], get_bloginfo('name'), $args['separator'], the_title_attribute( array( 'echo' => false ) ) ); $href = get_post_comments_feed_link( $post->ID ); } } elseif ( is_post_type_archive() ) { $post_type = get_query_var( 'post_type' ); if ( is_array( $post_type ) ) $post_type = reset( $post_type ); $post_type_obj = get_post_type_object( $post_type ); $title = sprintf( $args['posttypetitle'], get_bloginfo( 'name' ), $args['separator'], $post_type_obj->labels->name ); $href = get_post_type_archive_feed_link( $post_type_obj->name ); } elseif ( is_category() ) { $term = get_queried_object(); if ( $term ) { $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(); if ( $term ) { $title = sprintf( $args['tagtitle'], get_bloginfo('name'), $args['separator'], $term->name ); $href = get_tag_feed_link( $term->term_id ); } } elseif ( is_tax() ) { $term = get_queried_object(); $tax = get_taxonomy( $term->taxonomy ); $title = sprintf( $args['taxtitle'], get_bloginfo('name'), $args['separator'], $term->name, $tax->labels->singular_name ); $href = get_term_feed_link( $term->term_id, $term->taxonomy ); } elseif ( is_author() ) { $author_id = intval( get_query_var('author') ); $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 = 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 ) ); $post_type_obj = get_queried_object(); if ( $post_type_obj ) $href = get_post_type_archive_feed_link( $post_type_obj->name ); } if ( isset($title) && isset($href) ) echo '' . "\n"; } /** * Display the link to the Really Simple Discovery service endpoint. * * @link http://archipelago.phrasewise.com/rsd * @since 2.0.0 */ function rsd_link() { echo '' . "\n"; } /** * Display the link to the Windows Live Writer manifest file. * * @link https://msdn.microsoft.com/en-us/library/bb463265.aspx * @since 2.3.1 */ function wlwmanifest_link() { echo ' ', "\n"; } /** * Displays 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. Add this to the * {@see 'wp_head'} action. * * Typical usage is as a {@see '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') ) 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"; } /** * Display site icon meta tags. * * @since 4.3.0 * * @link https://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#rel-icon HTML5 specification link icon. */ function wp_site_icon() { if ( ! has_site_icon() && ! is_customize_preview() ) { return; } $meta_tags = array(); $icon_32 = get_site_icon_url( 32 ); if ( empty( $icon_32 ) && is_customize_preview() ) { $icon_32 = '/favicon.ico'; // Serve default favicon URL in customizer so element can be updated for preview. } if ( $icon_32 ) { $meta_tags[] = sprintf( '', esc_url( $icon_32 ) ); } $icon_192 = get_site_icon_url( 192 ); if ( $icon_192 ) { $meta_tags[] = sprintf( '', esc_url( $icon_192 ) ); } $icon_180 = get_site_icon_url( 180 ); if ( $icon_180 ) { $meta_tags[] = sprintf( '', esc_url( $icon_180 ) ); } $icon_270 = get_site_icon_url( 270 ); if ( $icon_270 ) { $meta_tags[] = sprintf( '', esc_url( $icon_270 ) ); } /** * Filters the site icon meta tags, so Plugins can add their own. * * @since 4.3.0 * * @param array $meta_tags Site Icon meta elements. */ $meta_tags = apply_filters( 'site_icon_meta_tags', $meta_tags ); $meta_tags = array_filter( $meta_tags ); foreach ( $meta_tags as $meta_tag ) { echo "$meta_tag\n"; } } /** * Prints resource hints to browsers for pre-fetching, pre-rendering * and pre-connecting to web sites. * * Gives hints to browsers to prefetch specific pages or render them * in the background, to perform DNS lookups or to begin the connection * handshake (DNS, TCP, TLS) in the background. * * These performance improving indicators work by using ``. * * @since 4.6.0 */ function wp_resource_hints() { $hints = array( 'dns-prefetch' => wp_dependencies_unique_hosts(), 'preconnect' => array(), 'prefetch' => array(), 'prerender' => array(), ); /* * Add DNS prefetch for the Emoji CDN. * The path is removed in the foreach loop below. */ /** This filter is documented in wp-includes/formatting.php */ $hints['dns-prefetch'][] = apply_filters( 'emoji_svg_url', 'https://s.w.org/images/core/emoji/2.3/svg/' ); foreach ( $hints as $relation_type => $urls ) { $unique_urls = array(); /** * Filters domains and URLs for resource hints of relation type. * * @since 4.6.0 * * @param array $urls URLs to print for resource hints. * @param string $relation_type The relation type the URLs are printed for, e.g. 'preconnect' or 'prerender'. */ $urls = apply_filters( 'wp_resource_hints', $urls, $relation_type ); foreach ( $urls as $key => $url ) { $atts = array(); if ( is_array( $url ) ) { if ( isset( $url['href'] ) ) { $atts = $url; $url = $url['href']; } else { continue; } } $url = esc_url( $url, array( 'http', 'https' ) ); if ( ! $url ) { continue; } if ( isset( $unique_urls[ $url ] ) ) { continue; } if ( in_array( $relation_type, array( 'preconnect', 'dns-prefetch' ) ) ) { $parsed = wp_parse_url( $url ); if ( empty( $parsed['host'] ) ) { continue; } if ( 'preconnect' === $relation_type && ! empty( $parsed['scheme'] ) ) { $url = $parsed['scheme'] . '://' . $parsed['host']; } else { // Use protocol-relative URLs for dns-prefetch or if scheme is missing. $url = '//' . $parsed['host']; } } $atts['rel'] = $relation_type; $atts['href'] = $url; $unique_urls[ $url ] = $atts; } foreach ( $unique_urls as $atts ) { $html = ''; foreach ( $atts as $attr => $value ) { if ( ! is_scalar( $value ) || ( ! in_array( $attr, array( 'as', 'crossorigin', 'href', 'pr', 'rel', 'type' ), true ) && ! is_numeric( $attr )) ) { continue; } $value = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value ); if ( ! is_string( $attr ) ) { $html .= " $value"; } else { $html .= " $attr='$value'"; } } $html = trim( $html ); echo "\n"; } } } /** * Retrieves a list of unique hosts of all enqueued scripts and styles. * * @since 4.6.0 * * @return array A list of unique hosts of enqueued scripts and styles. */ function wp_dependencies_unique_hosts() { global $wp_scripts, $wp_styles; $unique_hosts = array(); foreach ( array( $wp_scripts, $wp_styles ) as $dependencies ) { if ( $dependencies instanceof WP_Dependencies && ! empty( $dependencies->queue ) ) { foreach ( $dependencies->queue as $handle ) { if ( ! isset( $dependencies->registered[ $handle ] ) ) { continue; } /* @var _WP_Dependency $dependency */ $dependency = $dependencies->registered[ $handle ]; $parsed = wp_parse_url( $dependency->src ); if ( ! empty( $parsed['host'] ) && ! in_array( $parsed['host'], $unique_hosts ) && $parsed['host'] !== $_SERVER['SERVER_NAME'] ) { $unique_hosts[] = $parsed['host']; } } } } return $unique_hosts; } /** * Whether the user can access the visual editor. * * Checks if the user can access the visual editor and that it's supported by the user's browser. * * @since 2.0.0 * * @global bool $wp_rich_edit Whether the user can access the visual editor. * @global bool $is_gecko Whether the browser is Gecko-based. * @global bool $is_opera Whether the browser is Opera. * @global bool $is_safari Whether the browser is Safari. * @global bool $is_chrome Whether the browser is Chrome. * @global bool $is_IE Whether the browser is Internet Explorer. * @global bool $is_edge Whether the browser is Microsoft Edge. * * @return bool True if the user can access the visual editor, false otherwise. */ function user_can_richedit() { global $wp_rich_edit, $is_gecko, $is_opera, $is_safari, $is_chrome, $is_IE, $is_edge; 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_IE ) { $wp_rich_edit = ( strpos( $_SERVER['HTTP_USER_AGENT'], 'MSIE ' ) === false ); } elseif ( $is_gecko || $is_chrome || $is_edge || ( $is_opera && !wp_is_mobile() ) ) { $wp_rich_edit = true; } } } /** * Filters whether the user can access the visual editor. * * @since 2.1.0 * * @param bool $wp_rich_edit Whether the user can access the visual editor. */ return apply_filters( 'user_can_richedit', $wp_rich_edit ); } /** * 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. The 'html' setting is for the "Text" editor tab. * * @since 2.5.0 * * @return string Either 'tinymce', or 'html', or 'test' */ function wp_default_editor() { $r = user_can_richedit() ? 'tinymce' : 'html'; // defaults if ( wp_get_current_user() ) { // look for cookie $ed = get_user_setting('editor', 'tinymce'); $r = ( in_array($ed, array('tinymce', 'html', 'test') ) ) ? $ed : $r; } /** * Filters which editor should be displayed by default. * * @since 2.5.0 * * @param string $r Which editor should be displayed by default. Either 'tinymce', 'html', or 'test'. */ return apply_filters( 'wp_default_editor', $r ); } /** * Renders an editor. * * 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 https://core.trac.wordpress.org/ticket/17144. * * NOTE: Once initialized the TinyMCE editor cannot be safely moved in the DOM. For that reason * running wp_editor() inside of a meta box 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 https://core.trac.wordpress.org/ticket/19173 for more information. * * @see _WP_Editors::editor() * @since 3.3.0 * * @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 wp_editor( $content, $editor_id, $settings = array() ) { if ( ! class_exists( '_WP_Editors', false ) ) require( ABSPATH . WPINC . '/class-wp-editor.php' ); _WP_Editors::editor($content, $editor_id, $settings); } /** * Outputs the editor scripts, stylesheets, and default settings. * * The editor can be initialized when needed after page load. * See wp.editor.initialize() in wp-admin/js/editor.js for initialization options. * * @uses _WP_Editors * @since 4.8.0 */ function wp_enqueue_editor() { if ( ! class_exists( '_WP_Editors', false ) ) { require( ABSPATH . WPINC . '/class-wp-editor.php' ); } _WP_Editors::enqueue_default_editor(); } /** * Retrieves the contents of the search WordPress query variable. * * The search query string is passed through esc_attr() to ensure that it is safe * for placing in an html attribute. * * @since 2.3.0 * * @param bool $escaped Whether the result is escaped. Default true. * Only use when you are later escaping it. Do not use unescaped. * @return string */ function get_search_query( $escaped = true ) { /** * Filters the contents of the search query variable. * * @since 2.3.0 * * @param mixed $search Contents of the search query variable. */ $query = apply_filters( 'get_search_query', get_query_var( 's' ) ); if ( $escaped ) $query = esc_attr( $query ); return $query; } /** * Displays the contents of the search query variable. * * The search query string is passed through esc_attr() to ensure that it is safe * for placing in an html attribute. * * @since 2.1.0 */ function the_search_query() { /** * Filters the contents of the search query variable for display. * * @since 2.3.0 * * @param mixed $search Contents of the search query variable. */ echo esc_attr( apply_filters( 'the_search_query', get_search_query( false ) ) ); } /** * Gets the language attributes for the html tag. * * Builds up a set of html attributes containing the text direction and language * information for the page. * * @since 4.3.0 * * @param string $doctype Optional. The type of html document. Accepts 'xhtml' or 'html'. Default 'html'. */ function get_language_attributes( $doctype = 'html' ) { $attributes = array(); if ( function_exists( 'is_rtl' ) && is_rtl() ) $attributes[] = 'dir="rtl"'; if ( $lang = get_bloginfo('language') ) { if ( get_option('html_type') == 'text/html' || $doctype == 'html' ) $attributes[] = "lang=\"$lang\""; if ( get_option('html_type') != 'text/html' || $doctype == 'xhtml' ) $attributes[] = "xml:lang=\"$lang\""; } $output = implode(' ', $attributes); /** * Filters the language attributes for display in the html tag. * * @since 2.5.0 * @since 4.3.0 Added the `$doctype` parameter. * * @param string $output A space-separated list of language attributes. * @param string $doctype The type of html document (xhtml|html). */ return apply_filters( 'language_attributes', $output, $doctype ); } /** * Displays the language attributes for the html tag. * * Builds up a set of html attributes containing the text direction and language * information for the page. * * @since 2.1.0 * @since 4.3.0 Converted into a wrapper for get_language_attributes(). * * @param string $doctype Optional. The type of html document. Accepts 'xhtml' or 'html'. Default 'html'. */ function language_attributes( $doctype = 'html' ) { echo get_language_attributes( $doctype ); } /** * Retrieve paginated link for archive post pages. * * Technically, the function can be used to create paginated link list for any * area. The 'base' argument is used to reference the url, which will be used to * create the paginated links. The 'format' argument is then used for replacing * the page number. It is however, most likely and by default, to be used on the * archive post pages. * * The 'type' argument controls format of the returned value. The default is * 'plain', which is just a string with the links separated by a newline * character. The other possible values are either 'array' or 'list'. The * 'array' value will return an array of the paginated link list to offer full * control of display. The 'list' value will place all of the paginated links in * an unordered HTML list. * * The 'total' argument is the total amount of pages and is an integer. The * 'current' argument is the current page number and is also an integer. * * An example of the 'base' argument is "http://example.com/all_posts.php%_%" * and the '%_%' is required. The '%_%' will be replaced by the contents of in * the 'format' argument. An example for the 'format' argument is "?page=%#%" * and the '%#%' is also required. The '%#%' will be replaced with the page * number. * * You can include the previous and next links in the list by setting the * 'prev_next' argument to true, which it is by default. You can set the * previous text, by using the 'prev_text' argument. You can set the next text * by setting the 'next_text' argument. * * If the 'show_all' argument is set to true, then it will show all of the pages * instead of a short list of the pages near the current page. By default, the * 'show_all' is set to false and controlled by the 'end_size' and 'mid_size' * arguments. The 'end_size' argument is how many numbers on either the start * and the end list edges, by default is 1. The 'mid_size' argument is how many * numbers to either side of current page, but not including current page. * * It is possible to add query vars to the link by using the 'add_args' argument * and see add_query_arg() for more information. * * The 'before_page_number' and 'after_page_number' arguments allow users to * augment the links themselves. Typically this might be to add context to the * numbered links so that screen reader users understand what the links are for. * The text strings are added before and after the page number - within the * anchor tag. * * @since 2.1.0 * * @global WP_Query $wp_query * @global WP_Rewrite $wp_rewrite * * @param string|array $args { * Optional. Array or string of arguments for generating paginated links for archives. * * @type string $base Base of the paginated url. Default empty. * @type string $format Format for the pagination structure. Default empty. * @type int $total The total amount of pages. Default is the value WP_Query's * `max_num_pages` or 1. * @type int $current The current page number. Default is 'paged' query var or 1. * @type bool $show_all Whether to show all pages. Default false. * @type int $end_size How many numbers on either the start and the end list edges. * Default 1. * @type int $mid_size How many numbers to either side of the current pages. Default 2. * @type bool $prev_next Whether to include the previous and next links in the list. Default true. * @type bool $prev_text The previous page text. Default '« Previous'. * @type bool $next_text The next page text. Default 'Next »'. * @type string $type Controls format of the returned value. Possible values are 'plain', * 'array' and 'list'. Default is 'plain'. * @type array $add_args An array of query args to add. Default false. * @type string $add_fragment A string to append to each link. Default empty. * @type string $before_page_number A string to appear before the page number. Default empty. * @type string $after_page_number A string to append after the page number. Default empty. * } * @return array|string|void String of page links or array of page links. */ function paginate_links( $args = '' ) { global $wp_query, $wp_rewrite; // Setting up default values based on the current URL. $pagenum_link = html_entity_decode( get_pagenum_link() ); $url_parts = explode( '?', $pagenum_link ); // Get max pages and current page out of the current query, if available. $total = isset( $wp_query->max_num_pages ) ? $wp_query->max_num_pages : 1; $current = get_query_var( 'paged' ) ? intval( get_query_var( 'paged' ) ) : 1; // Append the format placeholder to the base URL. $pagenum_link = trailingslashit( $url_parts[0] ) . '%_%'; // URL base depends on permalink settings. $format = $wp_rewrite->using_index_permalinks() && ! strpos( $pagenum_link, 'index.php' ) ? 'index.php/' : ''; $format .= $wp_rewrite->using_permalinks() ? user_trailingslashit( $wp_rewrite->pagination_base . '/%#%', 'paged' ) : '?paged=%#%'; $defaults = array( 'base' => $pagenum_link, // http://example.com/all_posts.php%_% : %_% is replaced by format (below) 'format' => $format, // ?page=%#% : %#% is replaced by the page number 'total' => $total, 'current' => $current, 'show_all' => false, 'prev_next' => true, 'prev_text' => __('« Previous'), 'next_text' => __('Next »'), 'end_size' => 1, 'mid_size' => 2, 'type' => 'plain', 'add_args' => array(), // array of query args to add 'add_fragment' => '', 'before_page_number' => '', 'after_page_number' => '' ); $args = wp_parse_args( $args, $defaults ); if ( ! is_array( $args['add_args'] ) ) { $args['add_args'] = array(); } // Merge additional query vars found in the original URL into 'add_args' array. if ( isset( $url_parts[1] ) ) { // Find the format argument. $format = explode( '?', str_replace( '%_%', $args['format'], $args['base'] ) ); $format_query = isset( $format[1] ) ? $format[1] : ''; wp_parse_str( $format_query, $format_args ); // Find the query args of the requested URL. wp_parse_str( $url_parts[1], $url_query_args ); // Remove the format argument from the array of query arguments, to avoid overwriting custom format. foreach ( $format_args as $format_arg => $format_arg_value ) { unset( $url_query_args[ $format_arg ] ); } $args['add_args'] = array_merge( $args['add_args'], urlencode_deep( $url_query_args ) ); } // Who knows what else people pass in $args $total = (int) $args['total']; if ( $total < 2 ) { return; } $current = (int) $args['current']; $end_size = (int) $args['end_size']; // Out of bounds? Make it the default. if ( $end_size < 1 ) { $end_size = 1; } $mid_size = (int) $args['mid_size']; if ( $mid_size < 0 ) { $mid_size = 2; } $add_args = $args['add_args']; $r = ''; $page_links = array(); $dots = false; if ( $args['prev_next'] && $current && 1 < $current ) : $link = str_replace( '%_%', 2 == $current ? '' : $args['format'], $args['base'] ); $link = str_replace( '%#%', $current - 1, $link ); if ( $add_args ) $link = add_query_arg( $add_args, $link ); $link .= $args['add_fragment']; /** * Filters the paginated links for the given archive pages. * * @since 3.0.0 * * @param string $link The paginated link URL. */ $page_links[] = ''; endif; for ( $n = 1; $n <= $total; $n++ ) : if ( $n == $current ) : $page_links[] = "" . $args['before_page_number'] . number_format_i18n( $n ) . $args['after_page_number'] . ""; $dots = true; else : if ( $args['show_all'] || ( $n <= $end_size || ( $current && $n >= $current - $mid_size && $n <= $current + $mid_size ) || $n > $total - $end_size ) ) : $link = str_replace( '%_%', 1 == $n ? '' : $args['format'], $args['base'] ); $link = str_replace( '%#%', $n, $link ); if ( $add_args ) $link = add_query_arg( $add_args, $link ); $link .= $args['add_fragment']; /** This filter is documented in wp-includes/general-template.php */ $page_links[] = "" . $args['before_page_number'] . number_format_i18n( $n ) . $args['after_page_number'] . ""; $dots = true; elseif ( $dots && ! $args['show_all'] ) : $page_links[] = '' . __( '…' ) . ''; $dots = false; endif; endif; endfor; if ( $args['prev_next'] && $current && $current < $total ) : $link = str_replace( '%_%', $args['format'], $args['base'] ); $link = str_replace( '%#%', $current + 1, $link ); if ( $add_args ) $link = add_query_arg( $add_args, $link ); $link .= $args['add_fragment']; /** This filter is documented in wp-includes/general-template.php */ $page_links[] = ''; endif; switch ( $args['type'] ) { case 'array' : return $page_links; case 'list' : $r .= "\n"; break; default : $r = join("\n", $page_links); break; } return $r; } /** * Registers an admin colour scheme css file. * * Allows a plugin to register a new admin colour scheme. For example: * * wp_admin_css_color( 'classic', __( 'Classic' ), admin_url( "css/colors-classic.css" ), array( * '#07273E', '#14568A', '#D54E21', '#2683AE' * ) ); * * @since 2.5.0 * * @global array $_wp_admin_css_colors * * @param string $key The unique key for this theme. * @param string $name The name of the theme. * @param string $url The URL of the CSS file containing the color scheme. * @param array $colors Optional. An array of CSS color definition strings which are used * to give the user a feel for the theme. * @param array $icons { * Optional. CSS color definitions used to color any SVG icons. * * @type string $base SVG icon base color. * @type string $focus SVG icon color on focus. * @type string $current SVG icon color of current admin menu link. * } */ function wp_admin_css_color( $key, $name, $url, $colors = array(), $icons = array() ) { global $_wp_admin_css_colors; if ( !isset($_wp_admin_css_colors) ) $_wp_admin_css_colors = array(); $_wp_admin_css_colors[$key] = (object) array( 'name' => $name, 'url' => $url, 'colors' => $colors, 'icon_colors' => $icons, ); } /** * Registers the default Admin color schemes * * @since 3.0.0 */ function register_admin_color_schemes() { $suffix = is_rtl() ? '-rtl' : ''; $suffix .= SCRIPT_DEBUG ? '' : '.min'; wp_admin_css_color( 'fresh', _x( 'Default', 'admin color scheme' ), false, array( '#222', '#333', '#0073aa', '#00a0d2' ), array( 'base' => '#82878c', 'focus' => '#00a0d2', 'current' => '#fff' ) ); // Other color schemes are not available when running out of src if ( false !== strpos( get_bloginfo( 'version' ), '-src' ) ) { return; } wp_admin_css_color( 'light', _x( 'Light', 'admin color scheme' ), admin_url( "css/colors/light/colors$suffix.css" ), array( '#e5e5e5', '#999', '#d64e07', '#04a4cc' ), array( 'base' => '#999', 'focus' => '#ccc', 'current' => '#ccc' ) ); wp_admin_css_color( 'blue', _x( 'Blue', 'admin color scheme' ), admin_url( "css/colors/blue/colors$suffix.css" ), array( '#096484', '#4796b3', '#52accc', '#74B6CE' ), array( 'base' => '#e5f8ff', 'focus' => '#fff', 'current' => '#fff' ) ); wp_admin_css_color( 'midnight', _x( 'Midnight', 'admin color scheme' ), admin_url( "css/colors/midnight/colors$suffix.css" ), array( '#25282b', '#363b3f', '#69a8bb', '#e14d43' ), array( 'base' => '#f1f2f3', 'focus' => '#fff', 'current' => '#fff' ) ); wp_admin_css_color( 'sunrise', _x( 'Sunrise', 'admin color scheme' ), admin_url( "css/colors/sunrise/colors$suffix.css" ), array( '#b43c38', '#cf4944', '#dd823b', '#ccaf0b' ), array( 'base' => '#f3f1f1', 'focus' => '#fff', 'current' => '#fff' ) ); wp_admin_css_color( 'ectoplasm', _x( 'Ectoplasm', 'admin color scheme' ), admin_url( "css/colors/ectoplasm/colors$suffix.css" ), array( '#413256', '#523f6d', '#a3b745', '#d46f15' ), array( 'base' => '#ece6f6', 'focus' => '#fff', 'current' => '#fff' ) ); wp_admin_css_color( 'ocean', _x( 'Ocean', 'admin color scheme' ), admin_url( "css/colors/ocean/colors$suffix.css" ), array( '#627c83', '#738e96', '#9ebaa0', '#aa9d88' ), array( 'base' => '#f2fcff', 'focus' => '#fff', 'current' => '#fff' ) ); wp_admin_css_color( 'coffee', _x( 'Coffee', 'admin color scheme' ), admin_url( "css/colors/coffee/colors$suffix.css" ), array( '#46403c', '#59524c', '#c7a589', '#9ea476' ), array( 'base' => '#f3f2f1', 'focus' => '#fff', 'current' => '#fff' ) ); } /** * Displays the URL of a WordPress admin CSS file. * * @see WP_Styles::_css_href and its {@see 'style_loader_src'} filter. * * @since 2.3.0 * * @param string $file file relative to wp-admin/ without its ".css" extension. * @return string */ function wp_admin_css_uri( $file = 'wp-admin' ) { if ( defined('WP_INSTALLING') ) { $_file = "./$file.css"; } else { $_file = admin_url("$file.css"); } $_file = add_query_arg( 'version', get_bloginfo( 'version' ), $_file ); /** * Filters the URI of a WordPress admin CSS file. * * @since 2.3.0 * * @param string $_file Relative path to the file with query arguments attached. * @param string $file Relative path to the file, minus its ".css" extension. */ return apply_filters( 'wp_admin_css_uri', $_file, $file ); } /** * Enqueues or directly prints a stylesheet link to the specified CSS file. * * "Intelligently" decides to enqueue or to print the CSS file. If the * {@see 'wp_print_styles'} action has *not* yet been called, the CSS file will be * enqueued. If the {@see 'wp_print_styles'} action has been called, the CSS link will * be printed. Printing may be forced by passing true as the $force_echo * (second) parameter. * * For backward compatibility with WordPress 2.3 calling method: If the $file * (first) parameter does not correspond to a registered CSS file, we assume * $file is a file relative to wp-admin/ without its ".css" extension. A * stylesheet link to that generated URL is printed. * * @since 2.3.0 * * @param string $file Optional. Style handle name or file name (without ".css" extension) relative * to wp-admin/. Defaults to 'wp-admin'. * @param bool $force_echo Optional. Force the stylesheet link to be printed rather than enqueued. */ function wp_admin_css( $file = 'wp-admin', $force_echo = false ) { // For backward compatibility $handle = 0 === strpos( $file, 'css/' ) ? substr( $file, 4 ) : $file; if ( wp_styles()->query( $handle ) ) { if ( $force_echo || did_action( 'wp_print_styles' ) ) // we already printed the style queue. Print this one immediately wp_print_styles( $handle ); else // Add to style queue wp_enqueue_style( $handle ); return; } /** * Filters the stylesheet link to the specified CSS file. * * If the site is set to display right-to-left, the RTL stylesheet link * will be used instead. * * @since 2.3.0 * @param string $stylesheet_link HTML link element for the stylesheet. * @param string $file Style handle name or filename (without ".css" extension) * relative to wp-admin/. Defaults to 'wp-admin'. */ echo apply_filters( 'wp_admin_css', "\n", $file ); if ( function_exists( 'is_rtl' ) && is_rtl() ) { /** This filter is documented in wp-includes/general-template.php */ echo apply_filters( 'wp_admin_css', "\n", "$file-rtl" ); } } /** * Enqueues the default ThickBox js and css. * * If any of the settings need to be changed, this can be done with another js * file similar to media-upload.js. That file should * require array('thickbox') to ensure it is loaded after. * * @since 2.5.0 */ function add_thickbox() { wp_enqueue_script( 'thickbox' ); wp_enqueue_style( 'thickbox' ); if ( is_network_admin() ) add_action( 'admin_head', '_thickbox_path_admin_subfolder' ); } /** * Displays the XHTML generator that is generated on the wp_head hook. * * See {@see 'wp_head'}. * * @since 2.5.0 */ function wp_generator() { /** * Filters the output of the XHTML generator tag. * * @since 2.5.0 * * @param string $generator_type The XHTML generator. */ the_generator( apply_filters( 'wp_generator_type', 'xhtml' ) ); } /** * Display the generator XML or Comment for RSS, ATOM, etc. * * Returns the correct generator type for the requested output format. Allows * for a plugin to filter generators overall the {@see 'the_generator'} filter. * * @since 2.5.0 * * @param string $type The type of generator to output - (html|xhtml|atom|rss2|rdf|comment|export). */ function the_generator( $type ) { /** * Filters the output of the XHTML generator tag for display. * * @since 2.5.0 * * @param string $generator_type The generator output. * @param string $type The type of generator to output. Accepts 'html', * 'xhtml', 'atom', 'rss2', 'rdf', 'comment', 'export'. */ echo apply_filters( 'the_generator', get_the_generator($type), $type ) . "\n"; } /** * Creates the generator XML or Comment for RSS, ATOM, etc. * * Returns the correct generator type for the requested output format. Allows * for a plugin to filter generators on an individual basis using the * {@see 'get_the_generator_$type'} filter. * * @since 2.5.0 * * @param string $type The type of generator to return - (html|xhtml|atom|rss2|rdf|comment|export). * @return string|void The HTML content for the generator. */ function get_the_generator( $type = '' ) { if ( empty( $type ) ) { $current_filter = current_filter(); if ( empty( $current_filter ) ) return; switch ( $current_filter ) { case 'rss2_head' : case 'commentsrss2_head' : $type = 'rss2'; break; case 'rss_head' : case 'opml_head' : $type = 'comment'; break; case 'rdf_header' : $type = 'rdf'; break; case 'atom_head' : case 'comments_atom_head' : case 'app_head' : $type = 'atom'; break; } } switch ( $type ) { case 'html': $gen = ''; break; case 'xhtml': $gen = ''; break; case 'atom': $gen = 'WordPress'; break; case 'rss2': $gen = 'https://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) . ''; break; case 'rdf': $gen = ''; break; case 'comment': $gen = ''; break; case 'export': $gen = ''; break; } /** * Filters the HTML for the retrieved generator type. * * The dynamic portion of the hook name, `$type`, refers to the generator type. * * @since 2.5.0 * * @param string $gen The HTML markup output to wp_head(). * @param string $type The type of generator. Accepts 'html', 'xhtml', 'atom', * 'rss2', 'rdf', 'comment', 'export'. */ return apply_filters( "get_the_generator_{$type}", $gen, $type ); } /** * Outputs the html checked attribute. * * Compares the first two arguments and if identical marks as checked * * @since 1.0.0 * * @param mixed $checked One of the values to compare * @param mixed $current (true) The other value to compare if not just true * @param bool $echo Whether to echo or just return the string * @return string html attribute or empty string */ function checked( $checked, $current = true, $echo = true ) { return __checked_selected_helper( $checked, $current, $echo, 'checked' ); } /** * Outputs the html selected attribute. * * Compares the first two arguments and if identical marks as selected * * @since 1.0.0 * * @param mixed $selected One of the values to compare * @param mixed $current (true) The other value to compare if not just true * @param bool $echo Whether to echo or just return the string * @return string html attribute or empty string */ function selected( $selected, $current = true, $echo = true ) { return __checked_selected_helper( $selected, $current, $echo, 'selected' ); } /** * Outputs the html disabled attribute. * * Compares the first two arguments and if identical marks as disabled * * @since 3.0.0 * * @param mixed $disabled One of the values to compare * @param mixed $current (true) The other value to compare if not just true * @param bool $echo Whether to echo or just return the string * @return string html attribute or empty string */ function disabled( $disabled, $current = true, $echo = true ) { return __checked_selected_helper( $disabled, $current, $echo, 'disabled' ); } /** * Private helper function for checked, selected, and disabled. * * Compares the first two arguments and if identical marks as $type * * @since 2.8.0 * @access private * * @param mixed $helper One of the values to compare * @param mixed $current (true) The other value to compare if not just true * @param bool $echo Whether to echo or just return the string * @param string $type The type of checked|selected|disabled we are doing * @return string html attribute or empty string */ function __checked_selected_helper( $helper, $current, $echo, $type ) { if ( (string) $helper === (string) $current ) $result = " $type='$type'"; else $result = ''; if ( $echo ) echo $result; return $result; } /** * Default settings for heartbeat * * Outputs the nonce used in the heartbeat XHR * * @since 3.6.0 * * @param array $settings * @return array $settings */ function wp_heartbeat_settings( $settings ) { if ( ! is_admin() ) $settings['ajaxurl'] = admin_url( 'admin-ajax.php', 'relative' ); if ( is_user_logged_in() ) $settings['nonce'] = wp_create_nonce( 'heartbeat-nonce' ); return $settings; } News
  • Scholarships For Dads
  • Blog

News

How to Find Government Grants For Single Fathers


It can be overwhelming having to take care of a child on your own; fortunately the government realizes this and has created some federally funded programs that provide grants for single fathers. This article will help you to determine whether or not you are eligible for any of these programs and will cover the steps you need to take in order to apply.

As you already probably know, the Internet will be your most powerful resource when you are in search of grants for single dads. When searching, keep in mind what specific type of aid you are looking for. Do you need money for food, education, heating, or other bills? By keeping your searches specific you will be saving yourself hours. Also keep in mind that unlike loans which must be paid back eventually, single father grants are given to you outright with no strings attached.

One of the most widely participated in grants for single fathers is financial aid to return to school. If you are raising a child alone, it can be difficult to find the time and money to go to college, but doing so is perhaps the best thing you can do in order to improve your life. Applying for financial aid will lower your tuition costs significantly, sometimes paying for it all outright depending on how much your college charges. In order to apply, all you have to do is call up your school’s Financial Aid office and they will be happy to help you out. In order to determine your eligibility, you will have to fill out a FAFSA form.

When on your search for single father grants, you may notice that a lot of programs are specifically for single mothers. This can be discouraging since it may feel like you are being discriminated against. You may want to just go ahead and apply for these programs anyway, since your gender is not really a factor. Those in charge of these programs probably do not have a problem with giving funds to needy fathers, and probably just label them for moms as most single parents are female. You don’t have anything to lose by applying so go for it.

If you are looking for grants for single fathers so you can pay your household bills and properly take care of your children, then the first place to turn to is the Department of Health and Human Services office that is closest to you. They will be able to see if you qualify for programs such as food stamps, welfare, medical coverage, and more. They usually determine your eligibility based on how much you make and your financial obligations. You never know what grants for single dads you may receive so don’t be afraid to ask for help if you need it.

Article Source: http://EzineArticles.com/2895543

Grants and Scholarships For Dads


The thought of falling deeper into debt has a lot of dads putting off going back to school to get the much needed training they require to get a better job. Due to this fact, scholarships for dads is becoming more popular, offering the needed help for many dads.

With the recession, a lot of men have found themselves out of a job. And even the line of work they have done for years may even be gone. This is true for those who made a living in the automotive industry and the construction business plus many others. As a result of this, many men are returning to school to be trained in a totally new field of work.

Unfortunately, though, it does not seem that many of the colleges have heard about the recession and continue to increase the cost of attending classes. But thankfully there are grants and scholarships for dads that can help you cover the costs of going back to school without putting you into debt.

Basically there are two types of aid you can get for school. Grants and scholarships.

Grants, unlike loans, never have to be repaid. Plus there are no credit checks for getting this type of money. If you qualify, based on income, you can receive up to $5300 from the Pell grant. Plus there is the the Federal Supplemental Educational Opportunity Grant, in which you can receive up to $4000 if you qualify. And remember, both of these are free money grants.

And don’t forget about those scholarships. Even if you do qualify for one of the government grants, you should not stop there. Be sure to search for even more money that can help cover the cost of school in the form of a scholarships for dads. These can come from a variety of sources and new ones are added all the time.

The first place to look is the schools you are considering attending, as they often have special funds for adult students. Another place is businesses and nonprofit groups, who hand out financial aid too.

Article Source: http://EzineArticles.com/3067710

Obama Scholarships for Dads – Don’t Exist


This article is going to be more of a rant than anything else. I was looking around today and I saw someone on a forum talking about obama scholarships for dads. The forum conversation got pretty heated, but it ended with people being more confused than the person who initial asked the question – is there an actual scholarship that the President has created?

I have done some searching around and I don’t see any scholarships or grants from Obama or his cabinet. And first off, I’m a bit biased because I haven’t been too happy with his Presidency to be honest. I voted for him based in part on the hype and also the promises that he made. I remember standing a few feet from him, actually shaking his hand, and saying to myself “this guy has got to be the most honest and trustworthy politician I’ve ever met.”

Almost 3 or so years later, I’m looking at our country and just shaking my head. I don’t see any real ground breaking social changes in our country. There is actually a lot of racism getting stirred up in the media – crazy with that and we live in the year 2011!

Instead of going on and on about this, I want to give you guys a little hope – no pun intended there for those of you who remember his campaign. I think that getting money for school is going to always be tough. Our country’s education is very overpriced and it’s no wonder that about 8 out of 10 students need to take out money to afford it.

If you’ve already gone through the system and were able to get some money from the assistance programs – good for you! But I bet that you’re here because you’re looking for a little more. Books are damn expensive even though they are now in digital format. Hah – $100 for a digital copy of a book is insane.

Make sure that you also check out my main page because I’ve shared a list of 3 or 4 of the online 3rd party (sponsored) scholarship programs available for dads. They are not a definite thing, but are definitely worth the 5 minutes of your time that it will take to sign up. I personally do it every month or so. I’ve never won in the past 3 months, but I do know someone who did – lucky him!

Well, it is late here and I’m off to bed! Good night all

Scholarships For Dads Dot ORG Re-Design

Hey Guys,

I’m just posting a quick update to let everyone know that I’ve done a lot of re-designing of this site in the past couple of days. I’d really appreciate feedback. If you have the time out of your day, please post a comment below and let me know what you think.

Also, I’m on the lookout for new scholarships, grants, and any money that can help other dads with school. Send me an email or leave a comment if you have something that you think might be worthy of making the list.

Thanks,
Your Fellow Dad

My List (updated 6/21/2011):

To register for any of these scholarships, just click on the following links and enter your information on the registration pages.


Status: Active
Provider: Scholarships For Dads
Registration: Click here

Amount: $10,000

Review: This website is specifically for dads. I recommend it because the number of people who know is very low compared to more general scholarships and grants. This is currently the top site for dads looking for money for school.

Status: Active
Provider: Scholarship Spot
Registration: Click here

Amount: $10,000

Review: This site is very similar to the others. They give out $10k on a regular basis. Registration is free like all the other sites.

Status: Active
Provider: Scholarship Zone
Registration: Click here

Amount: $10,000

Review: A bit bigger of a scholarship site. Lots of people know about this one and you've got a lot smaller of a chance to get it. But like I always say, it can't hurt to try.

Status: Unknown
Provider: Scholarship Points
Registration: Click here

Amount: $10,000

Review: This is a fairly new site (to me at least). I don't know much about the people behind it, but it looks good from the quick research I did on their site. My lack of experience with this site puts it at number four on this list. Take a look at the site if you have questions. If you have personal experience with it, please shoot me an email and let me know.

Categories