2015-08-31 50 views
2
<?php 
function render_links($page, $level = 0) { 

    echo "<li>"; 

    echo "<a href=''>" . get_the_title($page) . "</a>"; 

    $children = get_pages("child_of=" . $page->id . "&parent=0"); 

    if (!empty($children)) { 
     echo "<ul>"; 

     foreach ($children as $c) { 
      render_links($c, $level + 1); 
     } 

     echo "</ul>"; 
    } 

    echo "</li>"; 
} 

echo "<ul>"; 
foreach (get_pages("parent=0") as $p) { 
    render_links($top_level); 
} 
echo "</ul>"; 
?> 

这是我的尝试呈现出父母和孩子,但它只是循环出现在许多李的当前页面标题。循环出wordpress菜单项和儿童

任何人都可以帮助我吗?

UPDATE:

<?php 
function render_links($page, $level = 0) { 

    echo "<li>"; 

    echo "<a href=''>" . get_the_title($page) . "</a>"; 

    $children = get_pages("child_of=" . $page->id); 

    if (!empty($children)) { 
     echo "<ul>"; 

     foreach ($children as $c) { 
      render_links($c, $level + 1); 
     } 

     echo "</ul>"; 
    } 

    echo "</li>"; 
} 

echo "<ul>"; 
foreach (get_pages("parent=0") as $p) { 
    render_links($top_level); 
} 
echo "</ul>"; 
?> 

当尝试这一点,正确的循环出当前页面,然后将其修建垃圾一样的孩子(即使只有1名儿童)。

但是它没有列出网站上的其他父母页面。 看图片: https://gyazo.com/93728738fadc3c6e97ed18d20a46d273

得到这个错误就被渲染后:

Fatal error: Maximum function nesting level of '100' reached, aborting! in C:\wamp\www\yangtorp\wp-includes\cache.php on line 

UPDATE:

<?php 
function render_links($pge, $level = 0) { 

    echo "<li>"; 

    echo "<a href=''>" . $pge->post_title . "</a>"; 

    $children = get_pages(array('child_of' => $post->ID, 'sort_column' => 'post_date', 'sort_order' => 'desc')); 

if (!empty($children) && $level != 2) { 

     echo "<ul class='sub-menu'>"; 

    foreach ($children as $c) { 
     render_links($c, $level + 1); 
    } 

    echo "</ul>"; 
} 

else{ 
    echo "</li>"; 
} 

} 

echo "<ul id='menu-main' class='menu'>"; 
foreach (get_pages("parent=0") as $p) { 
    render_links($p); 
} 
echo "</ul>"; 
?> 

更近一步。现在它列出父页面,并正确显示名称。但是我不能得到这个工作:

$children = get_pages("child_of=" . $page->id . "&parent=0"); 

回答

2

我认为你应该这样做:

if (!empty($children)) { 

     echo "<ul>"; 

    foreach ($children as $c) { 
     render_links($c, $level + 1); 
    } 

    echo "</ul>"; 
} 

//missing else case 
else{ 
    echo "</li>"; 
} 
0
<?php 
function render_links($pge, $level = 0) { 

    echo "<li>"; 

    echo "<a href=''>" . $pge->post_title . "</a>"; 

    //set arguments for which properties and sorting order the children should get. 
    $args = array( 
      'child_of' => $pge->ID, 
      'parent' => $pge->ID, 
      'hierarchical' => 0, 
      'sort_column' => 'menu_order', 
      'sort_order' => 'asc' 
    ); 

    // throw the arguments into the get_pages query 
    $children = get_pages($args); 

if (!empty($children) && $level != 2) { 

     echo "<ul class='sub-menu'>"; 

    foreach ($children as $c) { 
     render_links($c, $level + 1); 
    } 

    echo "</ul>"; 
} 

else{ 
    echo "</li>"; 
} 

} 

echo "<ul id='menu-main' class='menu'>"; 
foreach (get_pages("parent=0") as $p) { 
    render_links($p); 
} 
echo "</ul>"; 
?>