/** * Create the post footer * * Override: childtheme_override_postfooter <br> * Filter: seamless_postfooter */ function seamless_postfooter() { $post_type = get_post_type(); $post_type_obj = get_post_type_object($post_type); // Check for "Page" post-type and logged in user to show edit link if ($post_type == 'page' && current_user_can('edit_posts')) { $postfooter = '<footer class="entry-utility">' . seamless_postfooter_posteditlink(); $postfooter .= "</footer><!-- .entry-utility -->\n"; // Display nothing for logged out users on a "Page" post-type } elseif ($post_type == 'page') { $postfooter = ''; // For post-types other than "Pages" press on } else { $postfooter = '<footer class="entry-utility">'; if (is_single()) { $post_type_archive_link = function_exists('get_post_type_archive_link') ? get_post_type_archive_link($post_type) : home_url('/?post_type=' . $post_type); if (seamless_is_custom_post_type() && $post_type_obj->has_archive) { /* translators: %s is custom post type singular name, wrapped in link tags */ $postfooter .= sprintf(__('Browse the %s archive.', 'seamless'), ' <a href="' . $post_type_archive_link . '" title="' . sprintf(esc_attr__('Permalink to %s Archive', 'seamless'), $post_type_obj->labels->singular_name) . '">' . $post_type_obj->labels->singular_name . '</a>'); $postfooter .= ' '; } $postfooter .= seamless_postfooter_posttax(); $postfooter .= sprintf(_x('Bookmark the %1$spermalink%2$s.', '1s and 2s are the a href link wrappers, do not reverse them', 'seamless'), sprintf('<a title="%s" href="%s">', sprintf(esc_attr__('Permalink to %s', 'seamless'), the_title_attribute('echo=0')), apply_filters('the_permalink', get_permalink())), '</a>') . ' '; if (post_type_supports($post_type, 'comments')) { $postfooter .= seamless_postfooter_postconnect(); } } elseif (post_type_supports($post_type, 'comments')) { $postfooter .= seamless_postfooter_posttax(); $postfooter .= seamless_postfooter_postcomments(); } // Display edit link if (current_user_can('edit_posts')) { if (!is_single() && post_type_supports($post_type, 'comments')) { $postfooter .= "\n\n\t\t\t\t\t\t" . '<span class="meta-sep meta-sep-edit">|</span> '; } $postfooter .= ' ' . seamless_postfooter_posteditlink(); } $postfooter .= "\n\n\t\t\t\t\t</footer><!-- .entry-utility -->\n"; } // Put it on the screen echo apply_filters('seamless_postfooter', $postfooter); // Filter to override default post footer }
/** * Generates semantic classes for BODY element * * @param array $c body classes */ function seamless_legacy_body_class($c) { global $wp_query, $current_user, $blog_id, $post, $taxonomy; if (apply_filters('seamless_show_bc_wordpress', TRUE)) { // It's surely a WordPress blog, right? $c[] = 'wordpress'; } if (apply_filters('seamless_show_bc_blogid', TRUE)) { // Applies the blog id to BODY element .. blog-id1 for WordPress < 3.0 $c[] = 'blogid-' . $blog_id; } if (apply_filters('seamless_show_bc_datetime', TRUE)) { // Applies the time- and date-based classes (below) to BODY element seamless_date_classes(time(), $c); } if (apply_filters('seamless_show_bc_contenttype', TRUE)) { // Generic semantic classes for what type of content is displayed is_front_page() ? $c[] = 'home' : null; // For the front page, if set is_home() ? $c[] = 'blog' : null; // For the blog posts page, if set is_archive() ? $c[] = 'archive' : null; is_date() ? $c[] = 'date' : null; is_search() ? $c[] = 'search' : null; is_paged() ? $c[] = 'paged' : null; is_attachment() ? $c[] = 'attachment' : null; is_404() ? $c[] = 'four04' : null; // CSS does not allow a digit as first character } if (apply_filters('seamless_show_bc_singular', TRUE)) { // Special classes for BODY element when a singular post if (is_singular()) { $c[] = 'singular'; } else { $c[] = 'not-singular'; } } if (is_single() && apply_filters('seamless_show_bc_singlepost', TRUE)) { $postID = $wp_query->post->ID; the_post(); // Adds post slug class, prefixed by 'slug-' $c[] = 'slug-' . $wp_query->post->post_name; // Adds 'single' class and class with the post ID $c[] = 'single'; $c[] = 'postid-' . $postID; // Adds classes for the month, day, and hour when the post was published if (isset($wp_query->post->post_date)) { seamless_date_classes(mysql2date('U', $wp_query->post->post_date), $c, 's-'); } // Special classes for BODY element when a single post // Adds category classes for each category on single posts if ($cats = get_the_category()) { foreach ($cats as $cat) { $c[] = 's-category-' . $cat->slug; } } // Adds tag classes for each tag on single posts if ($tags = get_the_tags()) { foreach ($tags as $tag) { $c[] = 's-tag-' . $tag->slug; } } // Adds taxonomy classes for each term on single posts $single_post_type = get_post_type_object(get_post_type($post->ID)); // Check for post types without taxonomy inclusion if (isset($single_post_type->taxonomy)) { if ($tax = get_the_terms($post->ID, get_post_taxonomies())) { foreach ($tax as $term) { // Remove tags and categories from results if ($term->taxonomy != 'post_tag') { if ($term->taxonomy != 'category') { $c[] = 's-tax-' . $term->taxonomy; $c[] = 's-' . $term->taxonomy . '-' . $term->slug; } } } } } // Adds MIME-specific classes for attachments if (is_attachment()) { $mime_type = get_post_mime_type(); $mime_prefix = array('application/', 'image/', 'text/', 'audio/', 'video/', 'music/'); $c[] = 'attachmentid-' . $postID . ' attachment-' . str_replace($mime_prefix, "", "{$mime_type}"); } // Adds author class for the post author $c[] = 's-author-' . sanitize_title_with_dashes(strtolower(get_the_author_meta('user_nicename', $post->post_author))); rewind_posts(); // For posts with excerpts if (has_excerpt()) { $c[] = 's-has-excerpt'; } // For posts with comments open or closed if (comments_open()) { $c[] = 's-comments-open'; } else { $c[] = 's-comments-closed'; } // For posts with pings open or closed if (pings_open()) { $c[] = 's-pings-open'; } else { $c[] = 's-pings-closed'; } // For password-protected posts if ($post->post_password) { $c[] = 's-protected'; } // For sticky posts if (is_sticky()) { $c[] = 's-sticky'; } } elseif (is_author() && apply_filters('seamless_show_bc_authorarchives', TRUE)) { $author = $wp_query->get_queried_object(); $c[] = 'author'; $c[] = 'author-' . $author->user_nicename; } elseif (is_category() && apply_filters('seamless_show_bc_categoryarchives', TRUE)) { $cat = $wp_query->get_queried_object(); $c[] = 'category'; $c[] = 'category-' . $cat->slug; } elseif (is_tag() && apply_filters('seamless_show_bc_tagarchives', TRUE)) { $tags = $wp_query->get_queried_object(); $c[] = 'tag'; $c[] = 'tag-' . $tags->slug; } elseif (is_tax() && apply_filters('seamless_show_bc_taxonomyarchives', TRUE)) { $c[] = 'taxonomy'; $c[] = 'tax-' . $taxonomy; $c[] = $taxonomy . '-' . strtolower(seamless_get_term_name()); } elseif (is_page() && apply_filters('seamless_show_bc_pages', TRUE)) { $pageID = $wp_query->post->ID; $page_children = wp_list_pages("child_of={$pageID}&echo=0"); the_post(); // Adds post slug class, prefixed by 'slug-' $c[] = 'slug-' . $wp_query->post->post_name; $c[] = 'page'; $c[] = 'pageid-' . $pageID; $c[] = 'page-author-' . sanitize_title_with_dashes(strtolower(get_the_author_meta('user_nicename', $post->post_author))); // Checks to see if the page has children and/or is a child page; props to Adam if ($page_children) { $c[] = 'page-parent'; } if ($wp_query->post->post_parent) { $c[] = 'page-child parent-pageid-' . $wp_query->post->post_parent; } // For pages with excerpts if (has_excerpt()) { $c[] = 'page-has-excerpt'; } // For pages with comments open or closed if (comments_open()) { $c[] = 'page-comments-open'; } else { $c[] = 'page-comments-closed'; } // For pages with pings open or closed if (pings_open()) { $c[] = 'page-pings-open'; } else { $c[] = 'page-pings-closed'; } // For password-protected pages if ($post->post_password) { $c[] = 'page-protected'; } // Checks to see if the page is using a template if (is_page_template() & !is_page_template('default')) { $c[] = 'page-template page-template-' . str_replace('.php', '-php', get_post_meta($pageID, '_wp_page_template', true)); } rewind_posts(); } elseif (is_search() && apply_filters('seamless_show_bc_search', TRUE)) { the_post(); if ($wp_query->found_posts > 0) { $c[] = 'search-results'; } else { $c[] = 'search-no-results'; } rewind_posts(); } if (apply_filters('seamless_show_bc_loggedin', TRUE)) { // For when a visitor is logged in while browsing if ($current_user->ID) { $c[] = 'loggedin'; } } // Paged classes; for page x > 1 classes of index and all post types etc. if (isset($post) && apply_filters('seamless_show_bc_pagex', TRUE)) { if ((($page = $wp_query->get('paged')) || ($page = $wp_query->get('page'))) && $page > 1) { // Thanks to Prentiss Riddle, twitter.com/pzriddle, for the security fix below. $page = intval($page); // Ensures that an integer (not some dangerous script) is passed for the variable $c[] = 'paged-' . $page; if (seamless_is_custom_post_type()) { $c[] = str_replace('_', '-', $post->post_type) . '-paged-' . $page; } elseif (is_single() && $post->post_type == "post") { $c[] = 'single-paged-' . $page; } elseif (is_page()) { $c[] = 'page-paged-' . $page; } elseif (is_category()) { $c[] = 'category-paged-' . $page; } elseif (is_tag()) { $c[] = 'tag-paged-' . $page; } elseif (is_tax()) { $c[] = 'taxonomy-paged-' . $page; } elseif (is_date()) { $c[] = 'date-paged-' . $page; } elseif (is_author()) { $c[] = 'author-paged-' . $page; } elseif (is_search()) { $c[] = 'search-paged-' . $page; } // Paged classes; for page x = 1 For all post types } elseif (preg_match('/<!--nextpage(.*?)-->/', $post->post_content)) { if (seamless_is_custom_post_type()) { $c[] = str_replace('_', '-', $post->post_type) . '-paged-1'; } elseif (is_page()) { $c[] = 'page-paged-1'; } elseif (is_single()) { $c[] = 'single-paged-1'; } } } // And tada! return array_unique(apply_filters('seamless_legacy_body_class', $c)); // Available filter: seamless_legacy_body_class }