我使用WordPress native gallery–每个图像的输出是:
<dl class="gallery-item">
<dt class="gallery-icon">
<a href="(...)"><img src="(...)"></a>
</dt>
<dd class="wp-caption-text gallery-caption">
Caption here
</dd>
</dl>
这样做的来源是:
foreach ( $attachments as $id => $attachment ) {
$link = isset($attr[\'link\']) && \'file\' == $attr[\'link\'] ? wp_get_attachment_link($id, $size, false, false) : wp_get_attachment_link($id, $size, true, 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" />\';
}
我希望输出为:
<dl class="gallery-item">
<dt class="gallery-icon">
<a href="(...)">
<img src="(...)">
Caption here
</a>
</dt>
</dl>
但我无法获取链接或图像,因为链接是用来自“$link”的图像打印的。我该怎么做?
最合适的回答,由SO网友:Jory Hogeveen 整理而成
你应该以不同的方式获得附件。
使用wp_get_attachment_url
对于文件urlhttps://codex.wordpress.org/Function_Reference/wp_get_attachment_url
在你的情况下,这是一个图像,所以我建议wp_get_attachment_image_src
因此,您可以定义图像大小。https://developer.wordpress.org/reference/functions/wp_get_attachment_image_src/
通过这种方式,您可以将自己的“模板”变大以响应图像链接。
要获取图像元数据,只需使用get_post( $id )
因为图像也是post类型(附件)。
(编辑)示例:
foreach ( $attachments as $id => $attachment ) {
$large_image = wp_get_attachment_image_src( $id, \'full\' );
$small_image = wp_get_attachment_image_src( $id, \'medium\' ); // Cange the size to anything
$output .= "<{$itemtag} class=\'gallery-item\'>";
$output .= "<{$icontag} class=\'gallery-icon\'>";
$output .= "<a href=\'{$large_image[0]}\'>";
$output .= "<img src=\'{$small_image[0]}\' alt=\'{$attachment->post_title}\' />";
if ( $captiontag && trim($attachment->post_excerpt) ) {
$output .= "
<{$captiontag} class=\'wp-caption-text gallery-caption\'>
" . wptexturize($attachment->post_excerpt) . "
</{$captiontag}>";
}
$output .= "</a>";
$output .= "</{$icontag}>";
$output .= "</{$itemtag}>";
if ( $columns > 0 && ++$i % $columns == 0 )
$output .= \'<br style="clear: both" />\';
}