dsyua2828 2013-04-23 22:32
浏览 18
已采纳

Wordpress - 在wp_list页面中隐藏子页面的子项

I have following page structure:

  • Main page (id 5)
    • Subpage 1
      • children page
      • children page
    • Subpage 2
      • children page
      • children page

I use this code for displaying my sidebar menu:

 <?php wp_list_pages('child_of=5&title_li=&link_before=<span>&link_after=</span>'); ?>

This code displays only a list. I would need to display

  • when on the main page, display only subpages
  • when on the subpage, display subpages and children pages of the subpage I'm currently on
  • when on the children page, display the display subpages and children pages of the parent subpage I'm currently on

Any idea how to do this? Thanks for help

  • 写回答

3条回答 默认 最新

  • dongqiang8474 2013-04-24 21:31
    关注

    I found a working code, works like a charm for me:

    /**
     * Create HTML list of pages.
     *
     * @package Razorback
     * @subpackage Walker
     * @author Michael Fields <michael@mfields.org>
     * @copyright Copyright (c) 2010, Michael Fields
     * @license http://opensource.org/licenses/gpl-license.php GNU Public License
     *
     * @uses Walker_Page
     *
     * @since 2010-05-28
     * @alter 2010-10-09
     */
    class Razorback_Walker_Page_Selective_Children extends Walker_Page {
        /**
         * Walk the Page Tree.
         *
         * @global stdClass WordPress post object.
         * @uses Walker_Page::$db_fields
         * @uses Walker_Page::display_element()
         *
         * @since 2010-05-28
         * @alter 2010-10-09
         */
        function walk( $elements, $max_depth ) {
            global $post;
            $args = array_slice( func_get_args(), 2 );
            $output = '';
    
            /* invalid parameter */
            if ( $max_depth < -1 ) {
                return $output;
            }
    
            /* Nothing to walk */
            if ( empty( $elements ) ) {
                return $output;
            }
    
            /* Set up variables. */
            $top_level_elements = array();
            $children_elements  = array();
            $parent_field = $this->db_fields['parent'];
            $child_of = ( isset( $args[0]['child_of'] ) ) ? (int) $args[0]['child_of'] : 0;
    
            /* Loop elements */
            foreach ( (array) $elements as $e ) {
                $parent_id = $e->$parent_field;
                if ( isset( $parent_id ) ) {
                    /* Top level pages. */
                    if( $child_of === $parent_id ) {
                        $top_level_elements[] = $e;
                    }
                    /* Only display children of the current hierarchy. */
                    else if (
                        ( isset( $post->ID ) && $parent_id == $post->ID ) ||
                        ( isset( $post->post_parent ) && $parent_id == $post->post_parent ) ||
                        ( isset( $post->ancestors ) && in_array( $parent_id, (array) $post->ancestors ) )
                    ) {
                        $children_elements[ $e->$parent_field ][] = $e;
                    }
                }
            }
    
            /* Define output. */
            foreach ( $top_level_elements as $e ) {
                $this->display_element( $e, $children_elements, $max_depth, 0, $args, $output );
            }
            return $output;
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 找人不需要人工智能回答的gamit解算后做形变分析
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥15 统计大规模图中的完全子图问题
  • ¥15 使用LM2596制作降压电路,一个能运行,一个不能
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路
  • ¥15 phython读取excel表格报错 ^7个 SyntaxError: invalid syntax 语句报错
  • ¥20 @microsoft/fetch-event-source 流式响应问题
  • ¥15 ogg dd trandata 报错