Get_Pages()仅返回一项

时间:2015-01-29 作者:CChoma

我试图使用get\\u pages()列出特定父页面的子页面,以便在短代码中使用。不幸的是,只显示了一个页面,尽管还有很多页面需要显示。

// List Vocations
function get_vocations_list() {

    $args = array (
        \'parent\' => \'753\',
        \'sort_column\' => \'menu_order\',
        \'sort_order\' => \'desc\'
    );
    $voc_pages = get_pages($args);

    foreach( $voc_pages as $voc_page ) {
        $voc_link = \'<a href="\'.get_page_link( $voc_page->ID ).\'">\'.$voc_page->post_title.\'</a>\';
        return $voc_link;
    }

}
add_shortcode( \'vocations_list\', \'get_vocations_list\' );
我在解决这一问题方面失败了,希望从社区中获得一些见解,了解为什么会发生这种情况以及可能的解决方案。提前谢谢。

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

你的问题在这一部分

foreach( $voc_pages as $voc_page ) {
    $voc_link = \'<a href="\'.get_page_link( $voc_page->ID ).\'">\'.$voc_page->post_title.\'</a>\';
    return $voc_link;
}
您返回$voc_link 在第一次迭代之后,停止函数并返回其值。你应该return $voc_link; 在foreach循环之外,并可能将链接保存为数组

将上述部分更改为

foreach( $voc_pages as $voc_page ) {
    $voc_link[] = \'<a href="\'.get_page_link( $voc_page->ID ).\'">\'.$voc_page->post_title.\'</a>\';
}
return $voc_link;
编辑您的评论

这只返回“Array”

您很可能正在尝试响应该函数。无法回显数组,这将只打印单词Array

函数返回数组时,有两种选择

选项1将输出通过foreach

$links = get_vocations_list();
foreach ( $links as $link ) {

    echo $link;

}
选项2将数组转换为函数中的字符串,然后返回字符串

foreach( $voc_pages as $voc_page ) {
    $voc_link[] = \'<a href="\'.get_page_link( $voc_page->ID ).\'">\'.$voc_page->post_title.\'</a>\';
}

$voc_link = implode( \'</br>\', $voc_link );
return $voc_link;
然后将函数用作

echo get_vocations_list();

结束

相关推荐

Children Shortcodes?

几周前我开始创建WordPress插件,我想知道是否有可能在其他一些插件中“嵌入”短代码。基本上,我想做的是根据插件用户输入的一组项目创建一个表或列表。有没有可能有这样的东西: [data] [item1] something [/item1] [item2] something else[/item2] [item3] something else[/item3] [/data] 简而言之,我想基于itemX“children”短代码中