php - 循环出 WordPress 菜单项和子菜单项

标签 php wordpress

<?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>";
?>

这是我尝试渲染父级和子级,但是它只是在很多 li 中循环出当前页面标题。

有人可以帮助我吗?

更新:

<?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

更新:

<?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");

最佳答案

我认为你应该这样做:

 if (!empty($children)) {

       echo "<ul>";

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

    echo "</ul>";
}

 //missing else case
else{
    echo "</li>";
}

关于php - 循环出 WordPress 菜单项和子菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32309959/

相关文章:

php - 在配置文件中使用闭包作为数组值

WordPress wp-post-image 类去除器

javascript - Woocommerce 3 中没有在线支付交易的订单的谷歌分析集成

wordpress - 默认情况下使您的帖子受密码保护

asp.net - Wordpress 喜欢 asp.net 页面中的短代码吗?

Java - 如何加密 WordPress 的密码?

wordpress - WP REST API v2 无法使用过滤器

php - 通过查询或脚本在 mysql 表中插入 rownums

php - 如何实际地将 CSV 文件中的值拆分到 MySQL 数据库中

PHP 或 Apache 删除文件