我正在尝试在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++;
}
答案 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);