WordPress函数会破坏小工具的标记吗?

时间:2013-02-20 作者:Wordpressor

这是一个创建小部件的标准函数,它显示小部件的标题并在其下方回显“test”:

 function widget( $args, $instance ) {
        extract( $args );
        $title = apply_filters(\'widget_title\', $instance[\'title\'] );

        echo $before_widget;

        if ( $title )
            echo $before_title . $title . $after_title;

             echo \'test\';

        echo $after_widget;
    }
它创造了完美的输出:

<li id="widgets-id" class="widget widgets-class">
   <h2 class="widgettitle">Title</h2>
   test
</li>
但当我替换echo \'test\'; 具有wp_list_pages(); 事情开始看起来很糟糕,因为小部件的主体显示在关闭小部件的标记之后:

  <li id="widgets-id" class="widget widgets-class">
       <h2 class="widgettitle">Title</h2>
       <!-- Hey, I wanted this data to be put here! -->
   </li>
   <li class="page_item page-item-number">
     <a href="#">Paage title</a>
   <li>
   (...)
有没有办法解决这个问题?我一直在尝试使用多个wp\\u list\\u pages()参数,但似乎没有任何帮助。

1 个回复
最合适的回答,由SO网友:chrisguitarguy 整理而成

wp_list_pages 不将其输出包装在ulol 标签这取决于你。

换句话说,如果你打电话wp_list_pages, 它会吐出一堆li 标签,您的浏览器认为它是错误的,并在认为合适时“更正”html。尝试以下操作:

function widget( $args, $instance ) {
    extract( $args );
    $title = apply_filters(\'widget_title\', $instance[\'title\'] );

    echo $before_widget;

    if ( $title )
        echo $before_title . $title . $after_title;

    echo \'<ul>\';
    wp_list_pages();
    echo \'</ul>\';

    echo $after_widget;
}

结束