我正在为自定义帖子类型(books)开发一个模板,在该模板中,我调用了来自另一个自定义帖子类型(people)的作者列表。他们通过插件帖子2帖子链接。
我的目标是创建一个由逗号分隔的作者序列,如下所示:Author1、Author2、Author3、Author4。
使用下面的代码,结果是一系列作者,如下所示:Author1Author2Author3Author4。同样的代码也可以通过在“\\u post();”下面添加li除法来获取元素列表;,结果为:Author1-Author2-Author3-Author4
代码片段:
if ($autores->have_posts()):
echo \'<li>\';
echo \'<b>Autores: </b>\';
while ( $autores->have_posts() ) : $autores->the_post();
echo \'<a href="\';
echo the_permalink();
echo \'">\';
echo the_title();
echo \'</a>\';
endwhile;
echo \'</li>\';
endif;
也许这个问题可以用多种形式来回答。一种是将这个对象转换成一个元素数组(我还不知道怎么做?)。至少,我发现了一种非常有用的方法,可以处理分类元素(这里:
https://wordpress.stackexchange.com/a/238362), 但这在我的情况下不起作用,可能是因为我有一个对象,所以当我计算($autores)时,结果总是有1个。我还想知道是否可以使用css将元素列表转换为内联元素,并用逗号分隔它们。
如果这里有人能给我一个解决这个问题的想法,我将不胜感激。继续在我身边搜索。。。
最合适的回答,由SO网友:WebElaine 整理而成
如果你想把它们都放在一个外面<li>
, 你可以用这样的东西。与其立即回显,不如将其保存到阵列中,然后在阵列中循环。
<?php
if ($autores->have_posts()):
echo \'<li>\';
// create an empty array
$autoresArray = array();
while($autores->have_posts()): $autores->the_post();
// save the link and name
$autoreLink = get_permalink();
$autoreName = get_the_title();
// now add them to a multidimensional array
$autoresArray[] = array(
\'link\' => $autoreLink,
\'name\' => $autoreName,
);
endwhile;
// outside of \'while\' so we only display the author list once
for($i=0; $i<count($autoresArray); $i++) {
// display the linked name
echo \'<a href="\' . $autoresArray[$i][\'link\'] . \'">\' . $autoresArray[$i][\'name\'] . \'</a>\';
// if it\'s not the last name in the array, add comma and space
if($i != (count($autoresArray)-1)) {
echo \', \';
}
}
echo \'</li>\';
endif;
?>