web-dev-qa-db-ja.com

14のテーマのおすすめコンテンツにカスタム投稿タイプを追加するにはどうすればよいですか。

このwpmudevの投稿 は私の気持ちをちょうど約14回まとめたものです。

おすすめコンテンツはカスタム投稿タイプをサポートしていません - カスタム投稿タイプがタグ分類をサポートしている場合でも投稿のみが選択されます

カスタム分類法を共有する2つのCPTを追加しました。 inc/featured-content.phpjs/slider.jsfunctions.phpを見て、運なしでタグ付けしようとしました。

これらの投稿タイプを追加してホームページの[おすすめコンテンツ]スライダに表示するにはどうすればよいですか。

WPSEに関するQA

2
Danger14

twentyfourteen_get_featured_postsフィルタ

TwentyFourteenテーマでtwentyfourteen_get_featured_postsフィルタがどのように使用されているかを理解するには、少し掘り下げが必要でした。


注目のコンテンツは、 フェッチされた

$featured_posts = twentyfourteen_get_featured_posts();

しかし、この関数はこの一行だけです:

return apply_filters( 'twentyfourteen_get_featured_posts', array() );

だから肉はどこにありますか?


この から始まる Featured_Content クラスにあります。

add_filter( $filter, array( __CLASS__, 'get_featured_posts' ) );

$filterの由来は次のとおりです。

$filter = $theme_support[0]['featured_content_filter'];

ここで、

$theme_support = get_theme_support( 'featured-content' );

functions.php では、

// Add support for featured content.
add_theme_support( 'featured-content', array(
    'featured_content_filter' => 'twentyfourteen_get_featured_posts',
    'max_posts' => 6,
) );

それで我々はついにそれを見る:

$filter === 'twentyfourteen_get_featured_posts';

例:

デフォルトのおすすめコンテンツ投稿を上書きするには、これを試すことができます。

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 );

次のステップは、それをテーマカスタマイザに接続し、それをキャッシュすることです。

うまくいけば、あなたはここから旅を続けることができます;-)

2
birgire