The twentyfourteen_get_featured_posts
filter:
It took some digging, to figure out how the twentyfourteen_get_featured_posts
filter is used in the TwentyFourteen theme 😉
The featured content is fetched with:
$featured_posts = twentyfourteen_get_featured_posts();
but this function is only this single line:
return apply_filters( 'twentyfourteen_get_featured_posts', array() );
so where’s the meat?
We find it in the Featured_Content
class, starting with this line:
add_filter( $filter, array( __CLASS__, 'get_featured_posts' ) );
where $filter
comes from:
$filter = $theme_support[0]['featured_content_filter'];
where:
$theme_support = get_theme_support( 'featured-content' );
In functions.php
we find:
// Add support for featured content.
add_theme_support( 'featured-content', array(
'featured_content_filter' => 'twentyfourteen_get_featured_posts',
'max_posts' => 6,
) );
so we finally see that:
$filter === 'twentyfourteen_get_featured_posts';
Example:
To override the default featured content posts, you can then try this:
add_filter( 'twentyfourteen_get_featured_posts', function( $posts ){
// Modify this to your needs:
$posts = get_posts( array(
'post_type' => array( 'cpt1', 'cpt2' ),
'posts_per_page' => 6,
'featured_tax' => 'featured_term'
) );
return $posts;
}, PHP_INT_MAX );
The next step would be to connect it to the theme customizer and maybe cache it.
Hopefully you can continue the journey from here 😉