Child page menu in sidebar

时间:2017-04-15 作者:user1406440

我不想在我的Wordpress网站上使用子/子页面的下拉菜单,我想在父页面的侧栏中列出这些页面。

这是我到目前为止得到的代码(下面),但是它在侧栏中没有显示任何内容,因此我非常感谢您的帮助!

这是我的职责。php:

function wpb_list_child_pages() { 

    global $post; 

    if ( is_page() && $post->post_parent )
        $childpages = wp_list_pages( \'sort_column=menu_order&title_li=&child_of=\' . $post->post_parent . \'&echo=0\' );
    else
        $childpages = wp_list_pages( \'sort_column=menu_order&title_li=&child_of=\' . $post->ID . \'&echo=0\' );
    if ( $childpages ) {
        $string = \'<ul>\' . $childpages . \'</ul>\';
    }
    return $string;
}

add_shortcode(\'wpb_childpages\', \'wpb_list_child_pages\');
这是页面中的调用。php(也尝试了sidebar.php):

<?php wpb_list_child_pages(); ?>
知道怎么回事吗?!

另一方面,我认为父页面应该列在导航中,以便很容易返回(即使它位于主导航中)。有没有办法让第一个列表项成为父页面?

还有一点需要注意的是,我能找到的关闭/隐藏没有CSS的下拉列表的唯一方法是在“外观”>“菜单”中创建一个自定义菜单并关闭子菜单。还有其他更好的方法吗?

提前感谢!

EDIT

我只是想添加一个更新来显示我试图输出的标记。我意识到我也需要在那里找到标题/父页面!以下是标记示例:

<nav class="page-nav">
    <h3>Navigation Title</h3>
    <ul>
        <li><a href="#">Parent page</a></li>
        <li><a href="#">Child page #1</a></li>
        <li><a href="#">Child page #2</a></li>
        <li><a href="#">Child page #3</a></li>
    </ul>
</nav>

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

When trying to output a function\'s content, you have to notice whether you want to pass the data to another function (or something else which you want to feed), or you want to directly print it to the browser.

If you use return, your function will return the data, so you can use them in a secondary function as below:

second_function(first_function($input));

If you want to simply print the content to the browser, use either echo or print_r instead of return. It\'s recommended to use echo in your case. However, do not use echo while making shortcode functions. It will output the text in the ways you don\'t want to.

Back to our WordPress problem, shall we?

For the provided structure, use the following function:

function wpb_list_child_pages() { 

    global $post; 

    if ( is_page() && $post->post_parent )
        $childpages = wp_list_pages( \'sort_column=menu_order&title_li=&child_of=\' . $post->post_parent . \'&echo=0\' );
    else
        $childpages = wp_list_pages( \'sort_column=menu_order&title_li=&child_of=\' . $post->ID . \'&echo=0\' );
    if ( $childpages ) {
        $string = \'
        <nav class="page-nav">
            <h3>Navigation Title</h3>
               <ul>
                   <li><a href="\'.get_permalink($post->post_parent).\'">\'.get_the_title($post->post_parent).\'</a></li>\'
                   .$childpages.
               \'</ul>
        </nav>\';
    }
    return $string;
}

add_shortcode(\'wpb_childpages\', \'wpb_list_child_pages\');

Now, use this function to output your menu to wherever you wish:

<?php echo wpb_list_child_pages(); ?>

or do the shortcode:

echo do_shortcode( \' [wpb_childpages] \' );

or even use the shortcode in a text widget:

[wpb_childpages]

All producing the same result.

SO网友:Niket Kale

只需将此代码放入主题的自定义css菜单中

.子项{显示:无;}

或者使用Flexi页面插件,当根页面在浏览器中打开时,该插件将仅在任何页面上显示子页面。

相关推荐

如何将Java脚本添加到Custom-Page.php模板?

如何将javascript添加到自定义页面。php模板?如何使从w3schools ajax教程获得的以下javascript在自定义页面上工作。php模板?任何帮助都将不胜感激。工作javascript包含在以下HTML中:<!DOCTYPE html> <html> <style> table,th,td { border : 1px solid black; border-collapse: collapse;&#x