如何在父页面上显示子页面的特色图片?

时间:2017-05-30 作者:Emily Cowgill

我不懂编码,也不知道你是如何在家长页面上显示子页面的特色图片的,我试图添加我在网上找到的编码,但它只是显示在实际的网页上!

1 个回复
SO网友:LWS-Mo

更新:这里有多个选项。

您只需将图像和子页面标题作为常规内容插入父页面(这是最简单的解决方案)即可page.php(或类似的,取决于主题)主题文件夹中的文件。您可以创建一个新的页面模板文件用作父页面模板。您可以使用短代码。我个人认为,使用短代码是最好的选择,因为它与主题无关。因此,如果将来更改主题,此功能将继续工作。

已经有多个现有插件可以显示子页面,它们将完全满足您的需要。

然而,我想提供一个简单的代码来实现这一点。您应该创建一个新插件或在functions.php

在此之后,可以插入短代码[show_childpages] 在父页面中,如果此页面有子页面,则会列出它们<请记住,这只是一个最低限度的设置:

function show_childpages_shortcode() {

    // a shortcode should just return the content not echo html
    // so we start to create an object, and on the end we return it
    // if we dont do this the shortcode will be displayed in the top of the content
    ob_start();

    // only start if we are on a single page
    if ( is_page() ) {

        // get the ID of the current (parent) page
        $current_page_id = get_the_ID();

        // get all the children of the current page
        $child_pages = get_pages( array( 
            \'child_of\' => $current_page_id,  
        ) );

        // start only if we have some childpages
        if ($child_pages) {

            // if we have some children, display a list wrapper
            echo \'<ul class="childpages">\';

            // loop trough each childpage 
            foreach ($child_pages as $child_page) {

                $page_id    = $child_page->ID; // get the ID of the childpage
                $page_link  = get_permalink( $page_id ); // returns the link to childpage
                $page_img   = get_the_post_thumbnail( $page_id, \'medium\' ); // returns the featured image <img> element
                $page_title = $child_page->post_title; // returns the title of the child page

                ?>

                <li class="childpage-<?php echo $page_id; ?>">

                    <a href="<?php echo $page_link; ?>">

                        <h4><?php echo $page_title; ?></h4>
                        <?php echo $page_img; //display featured image ?>

                    </a>

                </li>

                <?php

            }//END foreach ($child_pages as $child_page)

            echo \'</ul>\';

        }//END if ($child_pages)    

    }//END if (is_page())

    // return the object
    return ob_get_clean();

}
add_shortcode( \'show_childpages\', \'show_childpages_shortcode\' );
这将创建一个无序列表,每个子页面都是一个列表项,带有链接、标题和图像。

您可以使用普通CSS为列表设置样式。

结束