independent-snipette/functions.php

269 lines
8.3 KiB
PHP

<?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'
)
);
}