web-dev-qa-db-ja.com

wp_list_pagesを使用するメニューの特定の場所に特定のカテゴリを追加する

ページを表示するメインメニューがあります。すべてのページにはサブページが関連付けられていますが、メニューにはサブページなしで単独で表示されるものと、すべてのサブページのリストとしてサブメニュー付きで表示されるものがあります。メニュー内のページは、それらに指定されたメニューの順序に従ってソートされます。 (下記の私のコードを見てください)。

それでは、メニューの特定の場所にいくつかのカテゴリを追加したいのですが、その方法がわからないのです。

Wp_list_pagesを使ってそれをすることは可能ですか?私のコードで気に入っているのは、すべてのサブページを表示するようにプログラムされた親ページにサブページが追加されると、その新しく追加されたサブページが自動的にサイトのメニューに表示されることです。ユーザーがサイトに表示される前に、新しく作成されたサブページをメニューに追加する必要がある場合は、[表示] - > [メニュー]機能を使用するのとは反対に。

私はそれを複雑にし過ぎるかもしれません(!)そしてそれをする唯一の方法はAppearance-> Menu機能性を通してである。私は本当にどんな助けと助言も感謝します!

これは私がページを表示するために使用するコードです。いくつかはすべてのサブページを含み、いくつかはトップレベルでのみです。

//main nav: use wp_list_pages to display cirtain parent pages without any and with all child pages (a tree with parent)
$parents = array(5,7,17,61,19,25);
$children = array();
foreach($parents as $parent) {
  $child_pages = get_pages( "child_of=$parent" );
  if($child_pages){
    foreach($child_pages as $child_page){
      $children[] = $child_page->ID;
    }
  }
}
//add all the pages that need to be included without children
$parents = array_merge( (array)$parents, (array)array(31,23) );
//merge $parents and $children
$menu_pages = array_merge( (array)$parents, (array)$children );
$menu_pages_str = implode(",", $menu_pages); 
?> 

<ul class="menu wrap">
  <?php wp_list_pages( "sort_column=menu_order&title_li=&include=$menu_pages_str" ); ?>
</ul>
2
dashaluna

wp_list_pagesの機能は限られているため、関数自体を書き直さずにカテゴリをカテゴリに挿入するのは困難です。

組み込みのMenu機能を使用するのが最善の方法です。少なくとも個々のアイテムクラスを設定して、最上位カテゴリのMenuヘッダーを作成できるようにするためです(ヘッダーアイテムに「ヘッダー」クラスなどを使用)。

Get_pages()関数を使用することもできます。これは、単にページに印刷するのではなく、ページの配列を返すようにするためです。これにより、配列を反復処理するときにデータの表示にロジックを追加できます。

0
Dave Hunt