<?php /* * You can add your own functions here. You can also override functions that are * called from within the parent theme. For a complete list of function you can * override here, please see the docs: * * https://github.com/raamdev/independent-publisher#functions-you-can-override-in-a-child-theme * */ /* * Uncomment the following to add a favicon to your site. You need to add favicon * image to the images folder of Independent Publisher Child Theme for this to work. */ /* function blog_favicon() { echo '<link rel="Shortcut Icon" type="image/x-icon" href="'.get_bloginfo('stylesheet_directory').'/images/favicon.ico" />' . "\n"; } add_action('wp_head', 'blog_favicon'); */ /* * Add version number to main style.css file with version number that matches the * last modified time of the file. This helps when making frequent changes to the * CSS file as the browser will always load the newest version. */ /* function independent_publisher_stylesheet() { wp_enqueue_style( 'independent-publisher-style', get_stylesheet_uri(), '', filemtime( get_stylesheet_directory() . '/style.css') ); } */ /* * Modifies the default theme footer. * This also applies the changes to JetPack's Infinite Scroll footer, if you're using that module. */ /* function independent_publisher_footer_credits() { $my_custom_footer = 'This is my custom footer.'; return $my_custom_footer; } */ /* * * * * * * Authors * * * * * * */ function independent_publisher_posted_author() { /** * This function gets called outside the loop (in header.php), * so we need to figure out the post author ID and Nice Name manually. */ global $wp_query; if ( function_exists( 'get_coauthors') ) { $coauthors = get_coauthors( $wp_query->post->ID ); printf('<span class="byline">'); $i = 0; foreach($coauthors as $author) { $i++; // keep track of how many we've processed $post_author_id = $author->ID; $post_author_nice_name = get_the_author_meta( 'display_name', $post_author_id ); printf( '<span class="author p-author vcard h-card"><a class="u-url url fn n" href="%1$s" title="%2$s" rel="author">%3$s</a></span>', esc_url( get_author_posts_url( get_the_author_meta( 'ID', $post_author_id ) ) ), esc_attr( sprintf( __( 'View all posts by %s', 'independent-publisher' ), $post_author_nice_name ) ), esc_html( $post_author_nice_name ) ); if ( $i < (sizeof($coauthors) - 1) ) { // Add comma for all but last two authors. printf(', '); } else if ( $i == (sizeof($coauthors) - 1) ) { // Add "and" for second-last authors printf(' and '); } printf('Size: %$1d', sizeof($coauthors)); // if last author, do nothing } printf('</span>'); } else { $post_author_id = $wp_query->post->post_author; $post_author_nice_name = get_the_author_meta( 'display_name', $post_author_id ); printf( '<span class="byline"><span class="author p-author vcard h-card"><a class="u-url url fn n" href="%1$s" title="%2$s" rel="author">%3$s</a></span></span>', esc_url( get_author_posts_url( get_the_author_meta( 'ID', $post_author_id ) ) ), esc_attr( sprintf( __( 'View all posts by %s', 'independent-publisher' ), $post_author_nice_name ) ), esc_html( $post_author_nice_name ) ); } } /* * * * * * * * * * Author cards * * * * * * * * * */ function independent_publisher_posted_author_card() { /** * This function gets called outside the loop (in header.php), * so we need to figure out the post author ID and Nice Name manually. */ global $wp_query; $post_author_id = $wp_query->post->post_author; $show_avatars = get_option( 'show_avatars' ); ?> <?php if ( ( !$show_avatars || $show_avatars === 0 ) && !independent_publisher_is_multi_author_mode() && get_header_image() ) : ?> <a class="site-logo" href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"> <img class="no-grav" src="<?php echo esc_url( get_header_image() ); ?>" height="<?php echo absint( get_custom_header()->height ); ?>" width="<?php echo absint( get_custom_header()->width ); ?>" alt="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" /> </a> <?php else: ?> <a class="site-logo" href="<?php echo get_author_posts_url( get_the_author_meta( 'ID', $post_author_id ) ); ?>"> <?php echo get_avatar( get_the_author_meta( 'ID', $post_author_id ), 100 ); ?> </a> <?php endif; ?> <div class="site-title"><?php independent_publisher_posted_author(); ?></div> <div class="site-description"><?php the_author_meta( 'description', $post_author_id ) ?></div> <?php get_template_part( 'menu', 'social' ); ?> <div class="site-published-separator"></div> <h2 class="site-published"><?php _e( 'Published', 'independent-publisher' ); ?></h2> <h2 class="site-published-date"><?php independent_publisher_posted_on_date(); ?></h2> <?php /* Show last updated date if the post was modified AND Show Updated Date on Single Posts option is enabled AND 'independent_publisher_hide_updated_date' Custom Field is not present on this post */ ?> <?php if ( get_the_modified_date() !== get_the_date() && independent_publisher_show_updated_date_on_single() && !get_post_meta( get_the_ID(), 'independent_publisher_hide_updated_date', true ) ) : ?> <h2 class="site-published"><?php _e( 'Updated', 'independent-publisher' ); ?></h2> <h2 class="site-published-date"><?php independent_publisher_post_updated_date(); ?></h2> <?php endif; ?> <?php do_action( 'independent_publisher_after_post_published_date' ); ?> <?php } /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Setup theme * * Basically replicates the independent_publisher setup function, * * but adds an extra topbar menu (and maybe more later) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ function independent_publisher_setup() { /** * Custom template tags for this theme. */ require( get_template_directory() . '/inc/template-tags.php' ); /** * Customizer additions. */ require( get_template_directory() . '/inc/customizer.php' ); /** * Load support for Microformats 2 * * @since 1.7.5 */ require( get_template_directory() . '/inc/mf2.php' ); /** * Make theme available for translation * Translations can be filed in the /languages/ directory */ load_theme_textdomain( 'independent-publisher', get_template_directory() . '/languages' ); /** * Add default posts and comments RSS feed links to head */ add_theme_support( 'automatic-feed-links' ); /** * Enable Custom Backgrounds */ add_theme_support( 'custom-background', apply_filters( 'independent_publisher_custom_background_args', array( 'default-color' => 'ffffff', 'default-image' => '', ) ) ); // Enable support for HTML5 markup. add_theme_support( 'html5', array( 'comment-list', 'search-form', 'comment-form', 'gallery', ) ); /** * Enable Post Thumbnails */ add_theme_support( 'post-thumbnails' ); /* * Add custom thumbnail size for use with featured images */ add_image_size( 'independent_publisher_post_thumbnail', 700, 700 ); /** * Enable editor style */ add_editor_style(); /** * Set max width of full screen visual editor to match content width */ set_user_setting( 'dfw_width', 700 ); /** * Set default value for Show Post Word Count theme option */ add_option( 'independent_publisher_general_options', array( 'show_post_word_count' => true ) ); /** * Set default value for Show Author Card theme option */ add_option( 'independent_publisher_general_options', array( 'show_author_card' => true ) ); /** * Set default value for Show Post Thumbnails theme option */ add_option( 'independent_publisher_excerpt_options', array( 'show_post_thumbnails' => false ) ); /** * This theme uses wp_nav_menu() in two locations. */ register_nav_menus( array( 'primary' => __( 'Primary Menu', 'independent-publisher' ), 'single' => __( 'Single Posts Menu', 'independent-publisher' ), 'social' => __( 'Social', 'independent-publisher' ), 'topbar' => __( 'Topbar Menu', 'independent-snipette' ), ) ); /** * Add support for the Aside Post Formats */ add_theme_support( 'post-formats', array( 'aside', 'link', 'gallery', 'status', 'quote', 'chat', 'image', 'video', 'audio' ) ); }