要更改wp_list_ages的ul class=“Child”吗?

时间:2013-01-29 作者:Shirou June

您好,我正在使用此代码打印页面和子页面列表:

<ul>
<?php wp_list_pages(\'title_li=&depth=2&child_of=\'); ?>
</ul>
它输出:

<ul>
    <li><a href="#">Page 1</a></li>
    <li><a href="#">Page 2</a>
        <ul class="children">
            <li><a href="#">Subpage 2a</a></li>
            <li><a href="#">Subpage 2b</a></li>
        </ul>
    </li>
    <li><a href="#">Page 3</a></li>
        <ul class="children">
            <li><a href="#">Subpage 3a</a></li>
            <li><a href="#">Subpage 3b</a></li>
        </ul>
    <li><a href="#">Page 4</a></li>
</ul>
是否有方法覆盖<ul class="children">functions.php? 喜欢<div class="container"><div class="container2"><ul> 以及接近</ul></div></div>

我在检查this example 但我不知道如何将其应用到我的案件中。。。感谢您的帮助!

1 个回复
SO网友:Simon

您可以通过提供Walker 调用时的对象wp_list_pages, 像这样:

<your-template>.php

wp_list_pages(array(
    \'title_li\' => null,
    \'depth\' => 2,
    \'child_of\' => 0,
    \'walker\' => new My_Walker(),
));
而不是默认值Walker_Page 这将使wp_list_pages 使用定制助行器,My_Walker. 我们唯一需要的区别是将您的整个列表包装在您在问题中描述的两个div中。为此,我们需要重写这些方法start_lvlend_lvl 属于Walker_Page. 如下所述,当列表位于级别0(最顶层)时,它将被包装在两个div中,而随后的列表将是普通的ul 元素。

functions.php

class My_Walker extends Walker_Page {

    function start_lvl( &$output, $depth = 0, $args = array() ) {
        $indent = str_repeat("\\t", $depth);

        if ($depth == 0) {
            $output .= "\\n$indent<div class=\'container\'><div class=\'container2\'><ul>\\n";
        } else {
            $output .= "\\n$indent<ul class=\'children\'>\\n";
        }
    }

    function end_lvl( &$output, $depth = 0, $args = array() ) {
        $indent = str_repeat("\\t", $depth);

        if ($depth == 0) {
            $output .= "$indent</ul></div></div>\\n";
        } else {
            $output .= "$indent</ul>\\n";
        }
    }
}
或者,如您提供的链接中所述,只需重写page\\u css\\u类并手动将每个函数调用与div包装在一起:

functions.php

function add_parent_class( $css_class = array(), $page = null, $depth = null, $args = array() )
{
    if ( ! empty( $args[\'has_children\'] ) )
        $css_class = array();
    return $css_class;
}
add_filter( \'page_css_class\', \'add_parent_class\', 10, 4 );

<your-template>.php

<div class="container"><div class="container2"><ul>
<ul>
<?php wp_list_pages(\'title_li=&depth=2&child_of=\'); ?>
</ul>
</div></div>

结束

相关推荐

Functions.php:从博客中排除类别

所以很明显,如何从模板中排除某些类别,但我不想修改4个模板,使它们忽略某个类别。有没有一种方法可以将某个类别从阅读设置的“博客”集中排除?我正在将博客分配到名为“博客”的页面。。。但显然,档案和搜索也需要对这一超出类别的内容视而不见。我宁愿在里面做functions.php