扩展基础 Walker 类时,我需要扩展 walk() 方法。

但是,调用父 walk() 方法不会产生任何结果。

这些是我尝试过的方法:

public function walk($elements, $max_depth) {
   parent::walk($elements, $max_depth);
}

public function walk($elements, $max_depth) {
   $parent_class=get_parent_class($this);
   $args = array($elements, $max_depth);

   call_user_func_array(array($parent_class, 'walk'), $args);
}

在我看来,一旦我覆盖了 walk() 事情就会中断。

这个方法应该返回一些特定的值吗?
我应该以不同的方式调用父方法吗?

最佳答案

Walker::walk 将返回遍历操作产生的字符串。
您将获得的是使用 Walker::display_elementWalker::start_lvlWalker::start_el 等方法创建的文本...
您将从父方法中获得的 HTML 代码可能很难在第二次以正确的方式进行修改,但如果您真的想这样做:

public function walk($elements, $max_depth) {
  $html = parent::walk($elements, $max_depth);

  /* Do something with the HTML output */

  return $html;
}

关于php - Wordpress walker 调用父 walk() 方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37321547/

10-10 10:02