__( 'Primary', 'author' ) ) ); } } add_action( 'after_setup_theme', 'ct_author_theme_setup', 10 ); // register widget areas function ct_author_register_widget_areas(){ /* register after post content widget area */ register_sidebar( array( 'name' => __( 'Primary Sidebar', 'author' ), 'id' => 'primary', 'description' => __( 'Widgets in this area will be shown in the sidebar', 'author' ), 'before_widget' => '
', 'after_widget' => '
', 'before_title' => '

', 'after_title' => '

' ) ); } add_action('widgets_init','ct_author_register_widget_areas'); /* added to customize the comments. Same as default except -> added use of gravatar images for comment authors */ if( !function_exists('ct_author_customize_comments' ) ) { function ct_author_customize_comments( $comment, $args, $depth ) { $GLOBALS['comment'] = $comment; $comment_type = $comment->comment_type; ?>
  • id="li-comment-">
    comment_author_email === get_option( 'admin_email' ) && get_theme_mod( 'avatar_method' ) == 'upload' ) { echo '' . get_comment_author() . ''; } else { echo get_avatar( get_comment_author_email(), 48, '', get_comment_author() ); } } ?>
    comment_approved == '0' ) : ?>

    '; $fields['email'] = '

    '; $fields['url'] = '

    '; return $fields; } } add_filter('comment_form_default_fields','ct_author_update_fields'); if( ! function_exists( 'ct_author_update_comment_field' ) ) { function ct_author_update_comment_field( $comment_field ) { $comment_field = '

    '; return $comment_field; } } add_filter('comment_form_field_comment','ct_author_update_comment_field'); // remove allowed tags text after comment form if( !function_exists('ct_author_remove_comments_notes_after' ) ) { function ct_author_remove_comments_notes_after( $defaults ) { $defaults['comment_notes_after'] = ''; return $defaults; } } add_action('comment_form_defaults', 'ct_author_remove_comments_notes_after'); // excerpt handling if( ! function_exists( 'ct_author_excerpt' ) ) { function ct_author_excerpt() { // make post variable available global $post; // check for the more tag $ismore = strpos( $post->post_content, '' ); // get the show full post setting $show_full_post = get_theme_mod( 'full_post' ); // if show full post is on and not on a search results page if ( ( $show_full_post == 'yes' ) && ! is_search() ) { // use the read more link if present if ( $ismore ) { the_content( __( 'Continue reading', 'author' ) . " " . get_the_title() . "" ); } else { the_content(); } } // use the read more link if present elseif ( $ismore ) { the_content( __( 'Continue reading', 'author' ) . " " . get_the_title() . "" ); } // otherwise the excerpt is automatic, so output it else { the_excerpt(); } } } // filter the link on excerpts if( !function_exists('ct_author_excerpt_read_more_link' ) ) { function ct_author_excerpt_read_more_link( $output ) { global $post; return $output . "

    " . __( 'Continue reading', 'author' ) . " " . get_the_title() . "

    "; } } add_filter('the_excerpt', 'ct_author_excerpt_read_more_link'); // change the length of the excerpts function ct_author_custom_excerpt_length( $length ) { $new_excerpt_length = get_theme_mod('excerpt_length'); // if there is a new length set and it's not 15, change it if( ! empty( $new_excerpt_length ) && $new_excerpt_length != 25 ){ return $new_excerpt_length; } // allow 0 to be an option if user wants to remove the excerpt entirely elseif( $new_excerpt_length === 0 ) { return 0; } else { return 25; } } add_filter( 'excerpt_length', 'ct_author_custom_excerpt_length', 99 ); // switch [...] to ellipsis on automatic excerpt if( !function_exists('ct_author_new_excerpt_more' ) ) { function ct_author_new_excerpt_more( $more ) { // get user set excerpt length $new_excerpt_length = get_theme_mod('excerpt_length'); // don't return trailing ellipsis if user removed excerpt if( $new_excerpt_length === 0 ) { return ''; } else { return '…'; } } } add_filter('excerpt_more', 'ct_author_new_excerpt_more'); // turns of the automatic scrolling to the read more link if( !function_exists('ct_author_remove_more_link_scroll' ) ) { function ct_author_remove_more_link_scroll( $link ) { $link = preg_replace( '|#more-[0-9]+|', '', $link ); return $link; } } add_filter( 'the_content_more_link', 'ct_author_remove_more_link_scroll' ); // for displaying featured images if( !function_exists('ct_author_featured_image' ) ) { function ct_author_featured_image() { // get post object global $post; // default to no featured image $has_image = false; // establish featured image var $featured_image = ''; // if post has an image if ( has_post_thumbnail( $post->ID ) ) { // get the featured image ID $image_id = get_post_thumbnail_id( $post->ID ); // get the image's alt text $image_alt_text = get_post_meta($image_id, '_wp_attachment_image_alt', true); // get the full-size version of the image $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'single-post-thumbnail' ); // set $image = the url $image = $image[0]; // if alt text is empty, nothing else equal to title string $title = empty($image_alt_text) ? '' : "title='" . esc_attr( $image_alt_text ) . "'"; // set to true $has_image = true; } if ( $has_image == true ) { // on posts/pages display the featured image if ( is_singular() ) { $featured_image = ""; } // on blog/archives display with a link else { $featured_image = " "; } } // allow videos to be added $featured_image = apply_filters( 'ct_author_featured_image', $featured_image ); if( $featured_image ) { echo $featured_image; } } } // associative array of social media sites if( !function_exists( 'ct_author_social_array' ) ) { function ct_author_social_array() { $social_sites = array( 'twitter' => 'author_twitter_profile', 'facebook' => 'author_facebook_profile', 'google-plus' => 'author_googleplus_profile', 'pinterest' => 'author_pinterest_profile', 'linkedin' => 'author_linkedin_profile', 'youtube' => 'author_youtube_profile', 'vimeo' => 'author_vimeo_profile', 'tumblr' => 'author_tumblr_profile', 'instagram' => 'author_instagram_profile', 'flickr' => 'author_flickr_profile', 'dribbble' => 'author_dribbble_profile', 'rss' => 'author_rss_profile', 'reddit' => 'author_reddit_profile', 'soundcloud' => 'author_soundcloud_profile', 'spotify' => 'author_spotify_profile', 'vine' => 'author_vine_profile', 'yahoo' => 'author_yahoo_profile', 'behance' => 'author_behance_profile', 'codepen' => 'author_codepen_profile', 'delicious' => 'author_delicious_profile', 'stumbleupon' => 'author_stumbleupon_profile', 'deviantart' => 'author_deviantart_profile', 'digg' => 'author_digg_profile', 'git' => 'author_git_profile', 'hacker-news' => 'author_hacker-news_profile', 'steam' => 'author_steam_profile', 'vk' => 'author_vk_profile', 'weibo' => 'author_weibo_profile', 'tencent-weibo' => 'author_tencent_weibo_profile', 'email' => 'author_email_profile' ); return apply_filters( 'ct_author_social_array_filter', $social_sites ); } } // used in ct_author_social_icons_output to return urls function ct_author_get_social_url($source, $site){ if( $source == 'header' ) { return get_theme_mod($site); } elseif( $source == 'author' ) { return get_the_author_meta($site); } } // output social icons if( ! function_exists('ct_author_social_icons_output') ) { function ct_author_social_icons_output($source) { // get social sites array $social_sites = ct_author_social_array(); // store the site name and url foreach ( $social_sites as $social_site => $profile ) { if( $source == 'header') { if ( strlen( get_theme_mod( $social_site ) ) > 0 ) { $active_sites[$social_site] = $social_site; } } elseif( $source == 'author' ) { if ( strlen( get_the_author_meta( $profile ) ) > 0 ) { $active_sites[$profile] = $social_site; } } } // for each active social site, add it as a list item if ( ! empty( $active_sites ) ) { echo "
    "; } } } /* * WP will apply the ".menu-primary-items" class & id to the containing
    instead of
      * making styling difficult and confusing. Using this wrapper to add a unique class to make styling easier. */ function ct_author_wp_page_menu() { wp_page_menu(array( "menu_class" => "menu-unset", "depth" => -1 ) ); } // used in header.php for primary avatar and comments function ct_author_output_avatar() { // get method for displaying avatar $avatar_method = get_theme_mod('avatar_method'); // if neither gravatar, nor upload used $avatar = ''; // if using gravatar if( $avatar_method == 'gravatar' ){ // get the avatar from the admin email $avatar = get_avatar( get_option('admin_email')); // use regex to grab source from markup $avatar = ct_author_get_avatar_url($avatar); } // if using an upload elseif( $avatar_method == 'upload') { // get the uploaded image $avatar = get_theme_mod('avatar'); } return $avatar; } function ct_author_get_avatar_url($get_avatar){ preg_match("/src='(.*?)'/i", $get_avatar, $matches); return $matches[1]; } function ct_author_nav_dropdown_buttons( $item_output, $item, $depth, $args ) { if ( 'primary' == $args->theme_location) { if( in_array('menu-item-has-children', $item->classes ) || in_array('page_item_has_children', $item->classes ) ) { $item_output = str_replace( $args->link_after . '', $args->link_after . '', $item_output ); } } return $item_output; } add_filter( 'walker_nav_menu_start_el', 'ct_author_nav_dropdown_buttons', 10, 4 ); // custom css output function ct_author_custom_css_output(){ $custom_css = get_theme_mod('custom_css'); /* output custom css */ if( $custom_css ) { $custom_css = wp_filter_nohtml_kses( $custom_css ); wp_add_inline_style( 'ct-author-style', $custom_css ); wp_add_inline_style( 'ct-author-style-rtl', $custom_css ); } } add_action('wp_enqueue_scripts', 'ct_author_custom_css_output', 20); function ct_author_body_class( $classes ) { global $post; /* get full post setting */ $full_post = get_theme_mod('full_post'); /* if full post setting on */ if( $full_post == 'yes' ) { $classes[] = 'full-post'; } if ( is_singular() ) { $classes[] = 'singular'; if ( is_singular('page') ) { $classes[] = 'singular-page'; $classes[] = 'singular-page-' . $post->ID; } elseif ( is_singular('post') ) { $classes[] = 'singular-post'; $classes[] = 'singular-post-' . $post->ID; } elseif ( is_singular('attachment') ) { $classes[] = 'singular-attachment'; $classes[] = 'singular-attachment-' . $post->ID; } } return $classes; } add_filter( 'body_class', 'ct_author_body_class' ); function ct_author_post_class( $classes ) { $classes[] = 'entry'; return $classes; } add_filter( 'post_class', 'ct_author_post_class' ); function ct_author_reset_customizer_options() { // validate name and value if( empty( $_POST['author_reset_customizer'] ) || 'author_reset_customizer_settings' !== $_POST['author_reset_customizer'] ) return; // validate nonce if( ! wp_verify_nonce( $_POST['author_reset_customizer_nonce'], 'author_reset_customizer_nonce' ) ) return; // validate user permissions if( ! current_user_can( 'manage_options' ) ) return; // delete customizer mods remove_theme_mods(); $redirect = admin_url( 'themes.php?page=author-options' ); $redirect = add_query_arg( 'author_status', 'deleted', $redirect); // safely redirect wp_safe_redirect( $redirect ); exit; } add_action( 'admin_init', 'ct_author_reset_customizer_options' ); function ct_author_delete_settings_notice() { if ( isset( $_GET['author_status'] ) ) { ?>

      .

      <?php wp_title(); ?> ' . __("Featured Post", "author") . ''; } } add_action( 'archive_post_before', 'ct_author_sticky_post_marker' ); function ct_author_loop_pagination(){ global $wp_query; // If there's not more than one page, return nothing. if ( 1 >= $wp_query->max_num_pages ) { return; } /* Set up some default arguments for the paginate_links() function. */ $defaults = array( 'base' => add_query_arg( 'paged', '%#%' ), 'format' => '', 'mid_size' => 1 ); $loop_pagination = ''; return $loop_pagination; } // Adds useful meta tags function ct_author_add_meta_elements() { $meta_elements = ''; /* Charset */ $meta_elements .= sprintf( '' . "\n", get_bloginfo( 'charset' ) ); /* Viewport */ $meta_elements .= '' . "\n"; /* Theme name and current version */ $theme = wp_get_theme( get_template() ); $template = sprintf( '' . "\n", esc_attr( $theme->get( 'Name' ) ), esc_attr( $theme->get( 'Version' ) ) ); $meta_elements .= $template; echo $meta_elements; } add_action( 'wp_head', 'ct_author_add_meta_elements', 1 ); /* Move the WordPress generator to a better priority. */ remove_action( 'wp_head', 'wp_generator' ); add_action( 'wp_head', 'wp_generator', 1 );