无法在Genesis框架中正确显示ACF的图像自定义域

时间:2017-03-26 作者:Karls

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,您只需为所有内容添加一个数据库查询。

1 个回复
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。

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在