使用快捷码列出特定页面的子页

时间:2019-03-30 作者:Jalapeno Jack

我编写了下面的函数来列出当前页面的子页面。现在我要做的是在短代码中使用特定页面的slug列出其子页面。

是否可以将属性潜入wp\\U list\\u页面?因此,例如,如果您想列出某个父段的页面,您可以在下面的短代码中指定父段[childpages parent=“projects”),我在这里有点困惑

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

    return $string;
    }

add_shortcode(\'childpages\', \'list_child_pages\');

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

wp_list_pages 可以接受child_of param,仅显示作为给定页面子级的页面。但您必须传递父页面的ID(因此您不能在其中放入slug)。

但你可以使用get_page_by_path 根据页面的slug获取页面对象。

您必须做的另一件事是向您的短代码添加一些参数。

下面是代码:

function childpages_shortcode_callback( $atts ) {
    $atts = shortcode_atts( array(
        \'parent\' => false,
    ), $atts, \'childpages\' );

    $parent_id = false;
    if ( $atts[\'parent\'] ) {
        $parent = get_page_by_path( $atts[\'parent\'] ); 
        if ( $parent ) {
            $parent_id = $parent->ID;
        }
    } else { // if no parent passed, then show children of current page
        $parent_id = get_the_ID();
    }

    $result = \'\';
    if ( ! $parent_id ) {  // don\'t waste time getting pages, if we couldn\'t get parent page
         return $result;
    }

    $childpages = wp_list_pages( array(
        \'sort_column\' => \'menu_order\',
        \'title_li\' => \'\',
        \'child_of\' => $parent_id,
        \'echo\' => 0
    ) );

    if ( $childpages ) {
        $result = \'<ul>\' . $childpages . \'</ul>\';
    }

    return $result;
}
add_shortcode( \'childpages\', \'childpages_shortcode_callback\' );

相关推荐

Shortcode is not working

通过阅读教程,我创建了一个简单的快捷代码:<?php /* Plugin Name: GT NoTranslate Shortcode Description: Shortcode to wrap a span with the \"notranslate\" span around text. Version: 0.1 BETA Author: Andrew Truckle Author URI: http://www.trucklesoft.co.