wp_list_pages检查是否没有孩子

时间:2016-09-08 14:28:42

标签: wordpress

我在wp_list_pages上使用自定义walker,现在我想根据他们是否有孩子来更改$ link和$ checkchildren的值。

我希望$ linkcss和$ checkchildren在没有孩子的情况下为null

$children = wp_list_pages(array(
    'sort_column' => 'menu_order',
    'title_li'    => '',
    'echo'        => 1,
    'walker' => new Sidebar_Custom_Walker()
));




class Sidebar_Custom_Walker extends Walker_Page {
    function start_el( &$output, $page, $depth, $args, $current_page = 0 ) {
        $output .= $indent . '<li class="rtChild">';
        $linkcss ="c1"; // should be blank if no children
        $output .= '<a href="' . get_permalink($page->ID) . '" class="'.$linkcss .'">' . $link_before;
        $output .= apply_filters( 'the_title', $page->post_title, $page->ID );
        $output .= $link_after . '</a>
        $checkchildren = '<span class="plusBtn"></span>'; // should be blank if no children
        $output .= $checkchildren;
    }
}

1 个答案:

答案 0 :(得分:0)

快速执行此操作的方法是在方法get_pages()中使用WordPress内置函数start_el。让我们解决这个问题:

第一部分:

<?php 

    class Sidebar_Custom_Walker extends Walker_Page {

        function start_el( &$output, $page, $depth, $args, $current_page = 0 ) {

            $output             .= $indent . '<li class="rtChild">';

新部分:

            // Retrieve page children with get_pages()
            // in combination with current $page->ID.
            $page_children       = get_pages( array('child_of' => $page->ID) );

            // Count amount of pages
            $page_children_count = count($page_children);

            // Does this page have children?
            if($page_children_count > 0){
                // Page has children
                $linkcss         = "c1";
                $checkchildren   = '<span class="plusBtn"></span>';
            }else{
                // Page has no children
                $linkcss         = null;
                $checkchildren   = null;
            }

我们的输出保持不变:

            $output  .=  '<a href="' . get_permalink($page->ID) . '" class="'.$linkcss .'">' . $link_before;
            $output  .=  apply_filters( 'the_title', $page->post_title, $page->ID );
            $output  .=  $link_after . '</a>';
            $output  .=  $checkchildren;

        }

    }


 ?>

我不确定是否优先使字符串无效,然后在另一个变量中将它们用作$output

我个人会将它们设置为空:

 $linkcss       = "";
 $checkchildren = "";