如何将标题帖子列表转换为逗号分隔的文本序列?

时间:2018-02-22 作者:Gadget

我正在为自定义帖子类型(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将元素列表转换为内联元素,并用逗号分隔它们。

如果这里有人能给我一个解决这个问题的想法,我将不胜感激。继续在我身边搜索。。。

1 个回复
最合适的回答,由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;
?>

结束

相关推荐