';
esc_html_e( 'Please go to Customize → Widgets and add at least one widget to the Magazine Homepage widget area.', 'benpress' );
echo '';
endif;
}
if ( ! function_exists( 'benpress_magazine_widget_title' ) ) :
/**
* Displays the widget title with link to the category archive
*
* @param String $widget_title Widget Title.
* @param int $category_id Category ID.
* @return String Widget Title
*/
function benpress_magazine_widget_title( $widget_title, $category_id ) {
// Check if widget shows a specific category.
if ( $category_id > 0 ) {
// Set URL and Title for Category.
$category_title = sprintf( esc_html__( 'View all posts from category %s', 'benpress' ), get_cat_name( $category_id ) );
$category_url = get_category_link( $category_id );
// Set Widget Title with link to category archive.
$widget_title = '' . $widget_title . '';
}
return $widget_title;
}
endif;
if ( ! function_exists( 'benpress_magazine_entry_meta' ) ) :
/**
* Displays the date and author of magazine posts
*/
function benpress_magazine_entry_meta() {
$postmeta = benpress_meta_date();
$postmeta .= benpress_meta_author();
echo '' . $postmeta . '
';
}
endif;
if ( ! function_exists( 'benpress_magazine_entry_date' ) ) :
/**
* Displays the date of magazine posts
*/
function benpress_magazine_entry_date() {
echo '' . benpress_meta_date() . '
';
}
endif;
/**
* Function to change excerpt length for posts in category posts widgets
*
* @param int $length Length of excerpt in number of words.
* @return int
*/
function benpress_magazine_posts_excerpt_length( $length ) {
return 12;
}
/**
* Get Magazine Post IDs
*
* @param String $cache_id Magazine Widget Instance.
* @param int $category Category ID.
* @param int $number_of_posts Number of posts.
* @return array Post IDs
*/
function benpress_get_magazine_post_ids( $cache_id, $category, $number_of_posts ) {
$cache_id = sanitize_key( $cache_id );
$post_ids = get_transient( 'benpress_magazine_post_ids' );
if ( ! isset( $post_ids[ $cache_id ] ) || is_customize_preview() ) {
// Get Posts from Database.
$query_arguments = array(
'fields' => 'ids',
'cat' => (int) $category,
'posts_per_page' => (int) $number_of_posts,
'ignore_sticky_posts' => true,
'no_found_rows' => true,
);
$query = new WP_Query( $query_arguments );
// Create an array of all post ids.
$post_ids[ $cache_id ] = $query->posts;
// Set Transient.
set_transient( 'benpress_magazine_post_ids', $post_ids );
}
return apply_filters( 'benpress_magazine_post_ids', $post_ids[ $cache_id ], $cache_id );
}
/**
* Delete Cached Post IDs
*
* @return void
*/
function benpress_flush_magazine_post_ids() {
delete_transient( 'benpress_magazine_post_ids' );
}
add_action( 'save_post', 'benpress_flush_magazine_post_ids' );
add_action( 'deleted_post', 'benpress_flush_magazine_post_ids' );
add_action( 'customize_save_after', 'benpress_flush_magazine_post_ids' );
add_action( 'switch_theme', 'benpress_flush_magazine_post_ids' );