2015-08-31 4 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>"; 
?> 

Это моя попытка визуализации родительских и дочерних элементов, однако она только зацикливает текущий заголовок страницы во многих ли.Looping out 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>"; 
?> 
Смежные вопросы