我把头发拉到这里,我根本无法让它发挥作用。
我需要做一个foreach循环来获取网站中的所有作者,然后我需要过滤出已发表的0篇文章,然后用文章将作者回复到带有特殊的UL LI
我的代码目前有两个函数,一个是预先过滤所有至少有一篇文章的作者,然后在第二个函数中计算过滤后的数组中留下的作者数量,然后给出数组中的最后一个条目一个特殊的li标签。代码到目前为止:
/*********************
Echo Filtered List
*********************/
function filtered_list() {
$authors = get_users('orderby=nicename');
$all_authors = array();
if ( count_user_posts( $author->id ) >= 1 ) {
return true;
}
}
function contributors() {
$i = 0;
filtered_list();
$len = count($all_authors);
foreach ($all_authors as $author ) {
if ( count_user_posts( $author->id ) >= 1 ) {
if ($i == $len - 1) {
echo "<li class='author-last clearfix'>";}
else {
echo "<li class='author clearfix'>";}
$i++;
答案 0 :(得分:1)
如果您仔细阅读代码,您可能会看到它无效的原因。
第一:范围
阅读PHP manual中的变量范围。基本上,函数内部声明的变量只能在该函数内部使用,因此$all_authors
在contributors()中为空,因为它从未被初始化。
filtered_list
函数应返回已过滤的作者列表,因此您应循环,$authors
并将作者添加到$all_authors
if {如果她有1个或更多帖子。循环之后,返回数组。
现在,您可以通过将第一个函数的返回值设置为contributors
中的$ all_authors来获取已过滤的列表(或者更好的是,只需将它们称为$authors
)。
现在您已准备好迭代作者列表并找到他们的帖子。为此,您需要两个循环。一个是作者,一个是帖子。
foreach author in authors
foreach post in author->posts
if post is last post
print special stuff
else
print normal stuff
endif
endforeach
endforeach
希望这会有所帮助,并且您将从中学到一些东西。要点是:逐行阅读您的代码并向自己解释它的作用。