我在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;
}
}
答案 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 = "";