-2

我创建了一个递归函数来确定当前页面是否是页面树中页面的子页面。

我的功能:

function is_ancestor_of( $page_name = null, $post ) {

  if(is_null($page_name))
    return false;

  // does it have a parent?
  if (!isset( $post->post_parent ) OR $post->post_parent <= 0 )
    return false;

  //Get parent page
  $parent = wp_get_single_post($post->post_parent);

  if ( $parent->post_name == $page_name ){
    echo $parent->post_name.' - '.$page_name;
    return true;
  } else {
    is_ancestor_of( $page_name, $parent );
  }
}

这是我正在测试的代码:

$is_parent = is_ancestor_of( 'account', $post );

if(!$is_parent) {
  echo '<br/> No match';
}

这是结果:

帐户 - 帐户
不匹配

这表明它确实找到了一个名为“帐户”的父页面,但它没有返回任何数据。我也测试过返回一个字符串,但这也不起作用。

谁能看到我做错了什么?

4

2 回答 2

3

您的问题似乎是您正在递归调用函数,但没有返回递归调用的结果。

你的线路

is_ancestor_of( $page_name, $parent );

应该只是

return is_ancestor_of( $page_name, $parent );
于 2012-07-15T17:19:47.170 回答
0

尝试$parent->post_name在下一行之前回显,您可能会更好地了解正在发生的事情。

 if ( $parent->post_name == $page_name ){
于 2012-07-15T17:19:23.523 回答