3

私が持っているのは、Wordpress の非常に深いメニュー構造で、一部のページでは 5 レベルの深さです。私が必要としているのは、現在のページの上にあるすべての親のメニューです。たとえば、私がここにいる場合:

Main / Sub / SubSub / SubSubSubお互いの上に見たい:

  • 全メインメニュー
  • サブのすべてのアイテムのメニュー
  • SubSubSub を含む、SubSub 内のすべての項目のメニュー

次のように wp_list_pages 関数を使用しています。

<?php
  if ( $post->post_parent ) {

$args = array(
  'child_of'    => $post->ID,
  'depth'       => 1,
  'sort_column' => 'post_date',
  'sort_order'  => 'DESC',
  'title_li'    => ''
);
echo '<nav id="subnav"><ul>';
  wp_list_pages( $args );
echo '</ul></nav>';

} ?>

しかし、自分がLv2以下かどうかはわかりません。このビットで先祖メニュー(常に表示)を見つけました:

'child_of' => get_post_top_ancestor_id()

しかし、最上位の祖先ではない他のすべての親に対して1つのメニューをリストすることはできません。ここでこのコードを変更してみました: https://wordpress.stackexchange.com/questions/15141/list-wordpress-custom-menus-active-parent-levels-children-as-separate-menu

ここのようにすべての親をループします: http://wordpress.org/support/topic/get-and-display-parent-pages-of-a-menu

主な問題は、私は PHP プログラマーではないため、独自の関数を作成することは実際にはオプションではないことです。どんな助けでも大歓迎です

4

1 に答える 1

0

ほぼそこに、私はまだ $howdeep > 2 をループして、表示する正しいレベルを見つける必要があります...誰かがそれを行う方法を知っていれば...

<?php

$id = 0;
$thispost = get_post($id);
$howdeep = 1;
$parentID = $thispost->post_parent;
while( $parentID != 0 ) {
$parent = get_post($parentID);
$howdeep++;
$parentID = $parent->post_parent;
}

if ( $howdeep == 2 ) {

$args = array(
    'child_of'      => $post->ID,
    'depth'         => 1,
    'sort_column'   => 'post_date',
    'sort_order'    => 'DESC',
    'title_li'      => ''
);
echo '<nav id="subsubnav"><ul>';
    wp_list_pages( $args );
echo '</ul></nav>';

} else if ( $howdeep == 3 ) {

$args = array(
    'child_of'      => $post->post_parent,
    'depth'         => 1,
    'sort_column'   => 'post_date',
    'sort_order'    => 'DESC',
    'title_li'      => ''
);
echo '<nav id="subsubnav"><ul>';
    wp_list_pages( $args );
echo '</ul></nav>';

} ?>
于 2013-01-09T10:07:38.890 に答える