如何创建自定义帖子类型的子项和兄弟项菜单?

时间:2019-11-13 作者:iamonstage

我想创建一个菜单,在父页面上显示子页面,但在兄弟页面上显示兄弟页面?

-汽车-大众-福特-宝马-自行车-摩托车

因此,在汽车页面上,输出将是以下链接:
Car, 大众、福特、宝马,当在福特页面上时,输出将是以下链接:
汽车、大众、,Ford, 宝马

我发现了一些类似的例子,其中最好的是https://learnwebcode.com/wordpress-child-page-menu-parent-and-subpages/ 但这不显示活动菜单项,也不适用于自定义帖子类型。

        <?php

        if ( has_children() OR $post->post_parent > 0 ) { ?>

            <nav class="site-nav children-links clearfix">

                <span class="parent-link"><a href="<?php echo get_the_permalink(get_top_ancestor_id()); ?>"><?php echo get_the_title(get_top_ancestor_id()); ?></a></span>

                <ul>
                    <?php

                    $args = array(
                        \'child_of\' => get_top_ancestor_id(),
                        \'title_li\' => \'\'
                    );

                    ?>

                    <?php wp_list_pages($args); ?>
                </ul>
            </nav>

        <?php } ?>
我感到惊讶的是,目前还没有一个解决方案。

如何从自定义贴子类型创建菜单,该菜单指示当前页面并显示子页面(如果是父页面),如果是子页面,则显示来自同一父页面和父页面的子页面?

1 个回复
SO网友:iamonstage

好吧,我想我已经破解了。下面的代码似乎运行良好。为了能够使用自定义的post类型,我在$args数组中添加了一个参数\'post_type\' => \'product\',

下面的可以吗?

      <div id="sub-pages">
        <?php
        global $post;
        $args = array(
          \'post_type\' => \'product\',
          \'child_of\' => get_top_ancestor_id(),
          \'title_li\' => \'\'
        );
        $the_query = new WP_Query($args);
        ?>
        <ul>
          <?php wp_list_pages($args); ?>
        </ul>
        <?php wp_reset_postdata(); ?>
      </div>
// Get top ancestor
function get_top_ancestor_id() {

    global $post;

    if ($post->post_parent) {
        $ancestors = array_reverse(get_post_ancestors($post->ID));
        return $ancestors[0];
    }

    return $post->ID;

}

相关推荐

用标准的干净文件替换NAV-menus.php文件?

我是一个自学成才的wordpress网站设计师,请原谅我的无知。我为一个客户开发的几个网站最近被一个印尼黑客组织破坏了(很有趣!)。客户端没有更新wordpress安装和其他一些危及安全的事情。遗憾的是,没有网站的清理备份。网络主机给了我一个包含恶意软件扫描结果的文本文件。看起来很多受影响的文件都是导航菜单。网站的php文件。文本文件中显示的扫描结果示例如下:“[主目录]/[网站文件夹名称]/wp includes/nav-menu.php:SL-php-INJECTOR-1-ejw.UNOFFICIAL