私はしばらくこれを試していました、そして明確な答えを得ませんでした。
私のメニュー項目の1つに11の最近の投稿を表示する必要があります。私のメニューはこんな感じです:
アイテム1・マンバ・アイテム3
MAMBAをロールオーバーするときは、投稿のタイトルとそれぞれのURLを表示する必要があります。このコードは Joeyjoejoeのカテゴリメニュー項目とその最後の10件の投稿(サブメニュー )から取得しましたが、すべてのサブメニュー項目の最新の投稿は次のように貼り付けます。カテゴリ.
MAMBAにのみ表示されるように少し変更する必要がありました。
$category_ten_last_posts = array(
'showposts' => 11,
'category_name' => 'mamba',
そしてターゲットアイテム:
$post->menu_item_parent = 45;
残念ながら、コードは最近の投稿リストを繰り返した形で繰り返し始めました。
マンバ
..........
投稿16
投稿15
...
投稿16
投稿15
...
ここでの私の質問は、選択したカテゴリから特定のメニュー項目までの最近の投稿の管理された数をリストする方法です。
あなたが与えることができるすべての助けてくれてありがとう。
宜しくお願いします。 H.
次のように各メニュー項目のID値を確認するのはどうでしょうか。
if( $item->ID === 45): // ADD THIS MENU-ITEM ID CHECK
// Query the lasts ten category posts
$category_ten_last_posts = array(
'posts_per_page' => 11,
'category_name' => 'mamba',
'orderby' => 'date',
'order' => 'DESC'
);
$posts = get_posts( $category_ten_last_posts );
foreach ( $posts as $post ) {
//...
}
endif;
ps:私はget_posts()
をforeach入力引数から外しました。
これは私のインストールで動作します:
!is_admin() AND add_filter( 'wp_get_nav_menu_items', 'display_lasts_ten_posts_for_categories_menu_item', 10, 3 );
// Add the ten last posts of af categroy menu item in a sub menu
function display_lasts_ten_posts_for_categories_menu_item( $items, $menu, $args ){
$menu_order = count($items);
$child_items = array();
foreach ( $items as $item ):
if( $item->ID === 45 ):
// Query the lasts ten category posts
$category_ten_last_posts = array(
'posts_per_page' => 11,
'category_name' => 'mamba',
'orderby' => 'date',
'order' => 'DESC'
);
$posts = get_posts( $category_ten_last_posts );
foreach( $posts as $post ):
// Add sub menu item
$post->menu_item_parent = $item->ID;
$post->post_type = 'nav_menu_item';
$post->object = 'custom';
$post->type = 'custom';
$post->menu_order = ++ $menu_order;
$post->title = $post->post_title;
$post->url = get_permalink( $post->ID );
/* add children */
$child_items[] = $post;
endforeach;
endif;
endforeach;
return array_merge( $items, $child_items );
}