親要素のIDを子要素のコンテナdivに追加したいです。どうやってやるの?これが私のコードです:
<?php
public function start_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat( "\t", $depth );
$output .= "\n$indent<ul id=\"Here I want to tell wordpress to put the ID of parent element\" class=\"collapse\">\n";
}
これを行うために必要なデータがstart_lvl()
メソッドにありません。そのデータは$item
変数のstart_el()
メソッドで利用できるので、そのデータを渡す方法を作り上げる必要があります。
class my_extended_walker extends Walker_Nav_Menu {
var $prnt = 0;
var $pdepth = false;
public function start_lvl( &$output, $depth = 0, $args = array() ) {
$id = '';
if (!empty($this->prnt)) {
$id = 'id="prnt-'.$this->prnt.'"';
}
$indent = str_repeat( "\t", $depth );
$output .= "\n$indent<ul $id class=\"collapse\">\n";
}
public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
if ($this->pdepth !== $depth) {
$this->prnt = $item->ID;
$this->pdepth = $depth;
} else {
$this->prnt = $this->pdepth = 0;
}
parent::start_el($output,$item,$depth,$args,$id);
}
}
// testing
wp_nav_menu(
array(
'walker'=>new my_extended_walker(),
'menu' => 'mymenu'
)
);