你的问题在这一部分
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();