为第一个foreach和其他所有人做些什么?

时间:2013-05-27 09:55:47

标签: php

我正在尝试在Wordpress中创建一个自定义图库,该图库显示第一个图库项目的图像和所有其他项目的文本。

我已经提出以下内容,但这只输出第一项而其他项没有。

知道我做错了吗?

$i = 0;
foreach ( $attachments as $id => $attachment ) {
    if ($i == 0) {
        echo 'the first one';
    }
    if ( $i !== 0) {
        $link = isset($attr['link']) && 'file' == $attr['link'] ? wp_get_attachment_link($id, 0, false, false) : wp_get_attachment_link($id, 0, false, false);
        $output .= "<{$itemtag} class='gallery-item'>";
        $output .= "
            <{$icontag} class='gallery-icon'>
                $link
            </{$icontag}>";
        if ( $captiontag && trim($attachment->post_excerpt) ) {
            $output .= "
                <{$captiontag} class='wp-caption-text gallery-caption'>
                " . wptexturize($attachment->post_excerpt) . "
                </{$captiontag}>";
        }
        $output .= "</{$itemtag}>";
        if ( $columns > 0 && ++$i % $columns == 0 )
            $output .= '<br style="clear: both" />';
        }
        $output .= 'Images: ' . count($attachments);
        $output .= "
                <br style='clear: both;' />
             </div>\n";

        return $output;
    }
    $i++;
}

3 个答案:

答案 0 :(得分:2)

你正在做return $output; - 这就是在那里停止整个事情。

请尝试使用echo $output;。否则我认为你已经得到了它。

正如另一个响应指出的那样,您也有一些语法错误。例如在这一行上缺少一个开口大括号{

        if ( $columns > 0 && ++$i % $columns == 0 )

您还需要清除$ output变量。每次循环开始时设置$output = '';,否则您只需继续追加$output并重复结果。

答案 1 :(得分:1)

这一行缺少一个大括号:

if ( $columns > 0 && ++$i % $columns == 0 )
            $output .= '<br style="clear: both" />';

然后 for 循环在$i++之前结束,而 $ i 永远不会增加。

答案 2 :(得分:0)

您可以将其用作函数,然后您可以回显模板中的函数和

类似于你的functions.php

   function countimages($id)
    {
    $i = 0;
    $countthem = count($attachments); //count them
    foreach ( $attachments as $id => $attachment ) {
        if ($i == 0) {
            echo 'the first one';
        }
        if ( $i !== 0) {
            $link = isset($attr['link']) && 'file' == $attr['link'] ? wp_get_attachment_link($id, 0, false, false) : wp_get_attachment_link($id, 0, false, false);
            $output .= "<{$itemtag} class='gallery-item'>";
            $output .= "
                <{$icontag} class='gallery-icon'>
                    $link
                </{$icontag}>";
            if ( $captiontag && trim($attachment->post_excerpt) ) {
                $output .= "
                    <{$captiontag} class='wp-caption-text gallery-caption'>
                    " . wptexturize($attachment->post_excerpt) . "
                    </{$captiontag}>";
            }
            $output .= "</{$itemtag}>";
            if ( $columns > 0 && ++$i % $columns == 0 )
                $output .= '<br style="clear: both" />';
            }
            $output .= 'Images: ' . count($attachments);
            $output .= "
                    <br style='clear: both;' />
                 </div>\n";

            return $output;
        }
        $i++;
    }
    }
then echo it inside your template page
$id=the_ID();
echo countimages($id);