WP 4.7.3包含类型、Genesis示例主题、ACF和一些非常著名的插件,没有任何特殊或非标准。
我知道如何在页面或模板上正确显示高级自定义字段转发器字段中的自定义字段。在我的例子中,对于每个帖子,我都输入了三个可能的图像自定义字段之一。所以,要检索一个图像大小,应该是这样的:
$count = get_post_meta( get_the_ID(), \'items\', true );
if ( $count ) {
for ( $i = 0; $i < $count; $i++ ) {
$item_100x100 = get_post_meta( get_the_ID(), \'items_\' . $i . \'_item_100x100\', true );
$item_200x200 = get_post_meta( get_the_ID(), \'items_\' . $i . \'_item_200x200\', true );
$item_300x300 = get_post_meta( get_the_ID(), \'items_\' . $i . \'_item_300x300\', true );
if ( $item_100x100 ) {
echo \'<p class="overview">\' . wp_get_attachment_image( $item_100x100, \'items\' ) . \'</p>\';
} elseif ( $item_200x200 ) {
echo \'<p class="overview">\' . wp_get_attachment_image( $item_200x200, \'items\' ) . \'</p>\';
} elseif ( $item_300x300 ) {
echo \'<p class="overview">\' . wp_get_attachment_image( $item_300x300, \'items\' ) . \'</p>\';
}
}
}
我认为这是正确的,而且效果很好。
然后我在做一个档案cpt。php文件,它必须为每个找到的帖子显示几个自定义字段,包括该图像。
现在,如果我必须显示特色图像,我可以:
// Featured image
if ( $image = genesis_get_image( \'format=url&size=item-image\' ) ) {
printf( \'<a href="%s" rel="bookmark"><img src="%s" alt="%s" class="alignleft" /></a>\', get_permalink(), $image, the_title_attribute( \'echo=0\' ) );
}
// Entry title
echo \'<h2 class="entry-title" itemprop="headline"><a href="\' . get_permalink() . \'">\'. get_the_title() .\'</a></h2>\';
但我并没有显示帖子的特色图片,我试图显示来自ACF转发器字段的图片类型自定义字段。
如果我这样做:
if ( $item_100x100 ) {
$image = wp_get_attachment_image( $item_100x100, \'items\' );
} elseif ( $item_200x200 ) {
$image = wp_get_attachment_image( $item_200x200, \'items\' );
} elseif ( $slope_map_300x300 ) {
$image = wp_get_attachment_image( $item_300x300, \'items\' );
}
printf( \'<a href="%s" rel="bookmark"><img src="%s" alt="%s" class="alignleft" /></a>\', get_permalink(), $image, the_title_attribute( \'echo=0\' ) );
我将图像打印在屏幕上,但后面跟着字符串
“alt=“my alt text”class=“alignleft”/>
在它旁边。
我尝试了其他几种方法,但最终得到了相同的结果,或者只是文章标题与文章链接,没有图片。
有人能帮忙吗?提前谢谢。
注意:我没有使用ACF的get\\u field()等命令,因为a)它们不是WP本机方式,b)它们添加数据库查询(如果有多个转发器或灵活的内容,则会添加很多、几十个)。对于本机WP,您只需为所有内容添加一个数据库查询。
SO网友:Karls
好的,下面是正确的答案,以及ACF中继器字段的完整代码:
$count = get_post_meta( get_the_ID(), \'items\', true );
if ( $count ) {
for ( $i = 0; $i < $count; $i++ ) {
$item_100x100 = intval( get_post_meta( get_the_ID(), \'items_\' . $i . \'_item_100x100\', true ) );
$item_200x200 = intval( get_post_meta( get_the_ID(), \'items_\' . $i . \'_item_200x200\', true ) );
$item_300x300 = intval( get_post_meta( get_the_ID(), \'items_\' . $i . \'_item_300x300\', true ) );
if ( $item_100x100 ) {
$image_id = wp_get_attachment_image_src( $item_100x100, \'full\' );
} elseif ( $item_200x200 ) {
$image = wp_get_attachment_image_src( $item_200x200, \'full\' );
} elseif ( $item_300x300 ) {
$image = wp_get_attachment_image_src( $item_300x300, \'full\' );
}
if ( $image ) {
echo \'<a href="\' . get_permalink() . \'" rel="bookmark"><img src="\' . $image[0] . \'" alt="\' . the_title_attribute( \'echo=0\' ) . \'">\';
}
}
}
或者,相反
回响
部分,您可以执行以下操作:
printf( \'<a href="%s" rel="bookmark"><img src="%s" alt="%s" class="alignleft" /></a>\', get_permalink(), $image[0], the_title_attribute( \'echo=0\' ) );
您只需将“full”更改为所需的图像大小。
UPDATE: 正如@bosco在下文中指出的,wp_get_attachment_image
将返回整个HTML元素。我们只希望图像的URL能够设置src
属性因此,我们将使用wp_get_attachment_image_src
在我们的代码中。我意识到我弄乱了HTML。