wp_list_pages自定义父/子属性

时间:2015-04-08 11:56:03

标签: wordpress wordpress-theme-customize

在使用wp_list_page

时,无论如何都不能在ul和li中添加自定义属性和类(S)/ id(S)

Google 很多,甚至尝试过探索 Stackoverflow

找到this(似乎仍无法使用wp_list_page作为使用jquery的人)

  <!-- navigation Menu -->

    <div class="navigation_menu">
        <div id="nav">
            <ul id="navmenu">
                <?php wp_list_pages('title_li='); ?>
            </ul>
        </div>
    </div>

screen shot由于信誉不足,无法添加图片(抱歉)

发现此site无论如何都没有帮助

任何建议/帮助将不胜感激

由于

2 个答案:

答案 0 :(得分:0)

在这里回答https://stackoverflow.com/a/23330336/3111930你需要自定义wp_list_pages函数调用使用的名为Walker_Page的类。

对于第一个<ul>元素,您需要像Nathan Dawson所写的那样自定义它。 要自定义<li> - 元素(通常是当前显示的页面的子元素),您需要自定义function start_el,例如:

public function start_el( &$output, $page, $depth = 0, $args = array(), $current_page = 0 ) {
        if ( $depth ) { // code indent
            $indent = str_repeat( "\t", $depth );
        } else {
            $indent = '';
        }

        if ( '' === $page->post_title ) { // DisplayName
            $page->post_title = sprintf( __( '#%d (no title)' ), $page->ID );
        }

        $args['link_before'] = empty( $args['link_before'] ) ? '' : $args['link_before'];
        $args['link_after'] = empty( $args['link_after'] ) ? '' : $args['link_after'];

        /** This filter is documented in wp-includes/post-template.php */
        $output .= $indent . sprintf(
            '<li class="%s"><a href="%s">%s%s%s</a>',
            'btn btn-default btn-block', // Using Bootstrap Button Layout
            get_permalink( $page->ID ), // href
            $args['link_before'], // Link Prefix
            apply_filters( 'the_title', $page->post_title, $page->ID ), // Link Text
            $args['link_after']  // Link Postfix
        );
    }

在此示例中,css类btn btn-default btn-block被添加到每个<li> - items class-attribute中,因此它们显示为bootstrap样式的按钮。

查看wp-includes \ post-template.php以查看原始的start_el函数。在我的例子中,不包括css类调平。

但是您只需要插入if ($depth == 0)并使用属性自定义li,if ($depth == 1)以其他方式自定义它。 我的意思是在你知道的情况下自定义sprintf-output?

答案 1 :(得分:0)

这是帮助我的......其他方法都没有工作......

           <?php

             global $wpdb;
    $men = $wpdb->get_results("SELECT ID,post_parent,post_title,guid FROM `wp_posts` where post_type='page' and post_parent='0'  and post_status='publish'");
    $i=1;
    foreach($men as $menu){

        if($menu->post_parent=="0"){
            $post_prnt = '';
             '<li data-match="'.$i.'" class="" id="main_2_rptLevelOneNav_footeritem_'.$i.'">';
             '<a id="main_2_rptLevelOneNav_hypLevelTwoTitle_'.$i.'" href="'.$menu->guid.'">'.$menu->post_title.'</a>';
             '</li>';
            $post_prnt = $wpdb->get_results("select ID,post_title,guid,post_parent FROM `wp_posts` where post_parent='".$menu->ID."' and post_status='publish' and post_type='page'");
            $arr = '';
            if(count($post_prnt>0))
            {

                    $u=0;
                     foreach ($post_prnt as $p_prnt){
                    $arr[] = array($i,$p_prnt->post_title,$p_prnt->guid); 
                    $u++;
                        }
            $arrr[] = array($arr);   
            }

            $i++;
        }
    }

if(count($arrr)>0)
{
     foreach($arrr as $key=>$val)
     {
        if(count($val)>0)
        {
            foreach($val as $key1=>$val1)
            {
                if(count($val1)>0)
                {
                    if($val1[0][0]!='')
                    {
                    echo '<li data-match="'.$val1[0][0].'" class="level-one" style="display: none; left: 335.15px; top: 111px; position: absolute;"><ul>';
                        $k=0;
                        foreach($val1 as $key2=>$val2)
                        {
                            echo '<li class="level-two">
                        <a href="'.$val2[2].'" id="main_0_ctl01_rptLevelOneSubNav_rptLevelTwoSubNav_'.$val1[0][0].'_hypLevelTwoTitle_'.$k.'">'.$val2[1].'</a>
                    </li>';
                    $k++;
                        }
                    echo '</ul></li>';
                 }   
                }
            }
        }
        //foreach($val )        
     }
}
?>