ACF 和 Wordpress 媒体库
ACF & Wordpress Media Library
我有一个 ACF 'options page',里面有一个占位符图像,如果客户错误地从 post/page 中删除图像,我可以回退。我正在使用以下代码来处理这种情况。
<?php
// Variables
$banner_image = get_field('banner_image');
$fallback_banner_image = get_field('fallback_image', 'options');
?>
<?php if ( $banner_image ): { ?>
<img class="hero-content" src="<?php echo esc_url( $banner_image_src[0] ); ?>" srcset="<?php echo esc_attr( $banner_image_srcset ); ?>" sizes="100vw" alt="<?php echo $banner_image_alt_text ?>">
<?php } elseif ( empty( $banner_image ) ): { ?>
<img class="hero-content" src="<?php echo esc_url( $fallback_banner_image_src[0] ); ?>" srcset="<?php echo esc_attr( $fallback_banner_image_srcset ); ?>" sizes="100vw" alt="<?php echo $fallback_banner_image_alt_text ?>">
<?php } endif; ?>
保存页面或帖子后,这会正常工作。
不过
我遇到的问题是,如果 page/post 之前保存了一张图片,然后用户直接从媒体库中删除了图片,该字段不会变成 'empty',所以内容只是消失,而不是回到我想要的占位符图像。
关于如何处理直接从媒体库中删除的图像有什么建议吗?
谢谢。
您可以使用 attachment_url_to_postid。使用此函数,您可以从图像 url 中获取 post id。如果 post id 不存在,则用户之前删除了附件。所以根据这个函数的结果,你可以实际测试附件是否被删除并使用占位符代替。
我已经使用 onerror 为任何有类似问题的人解决了这个问题。
我在主题目录的根目录下放置了一个文件夹,里面有一个简单的浅灰色占位符图像,因此用户永远无法删除它。
然后将以下内容添加到我的图片标签的末尾。当媒体库图像被错误删除时,似乎工作得很好。
<img src="<?php echo esc_url( $image_src[0] ); ?>" srcset="<?php echo esc_attr( $image_srcset ); ?>" sizes="(min-width: 1050px) 25vw, (min-width: 750px) 33.333vw, (min-width: 500px) 50vw, 100vw" alt="<?php echo $image_alt_text ?>" onerror="this.onerror=null;this.src='https://www.domain-name.co.uk/fallback-folder/missing-placeholder-img.jpg';">
我有一个 ACF 'options page',里面有一个占位符图像,如果客户错误地从 post/page 中删除图像,我可以回退。我正在使用以下代码来处理这种情况。
<?php
// Variables
$banner_image = get_field('banner_image');
$fallback_banner_image = get_field('fallback_image', 'options');
?>
<?php if ( $banner_image ): { ?>
<img class="hero-content" src="<?php echo esc_url( $banner_image_src[0] ); ?>" srcset="<?php echo esc_attr( $banner_image_srcset ); ?>" sizes="100vw" alt="<?php echo $banner_image_alt_text ?>">
<?php } elseif ( empty( $banner_image ) ): { ?>
<img class="hero-content" src="<?php echo esc_url( $fallback_banner_image_src[0] ); ?>" srcset="<?php echo esc_attr( $fallback_banner_image_srcset ); ?>" sizes="100vw" alt="<?php echo $fallback_banner_image_alt_text ?>">
<?php } endif; ?>
保存页面或帖子后,这会正常工作。
不过
我遇到的问题是,如果 page/post 之前保存了一张图片,然后用户直接从媒体库中删除了图片,该字段不会变成 'empty',所以内容只是消失,而不是回到我想要的占位符图像。
关于如何处理直接从媒体库中删除的图像有什么建议吗?
谢谢。
您可以使用 attachment_url_to_postid。使用此函数,您可以从图像 url 中获取 post id。如果 post id 不存在,则用户之前删除了附件。所以根据这个函数的结果,你可以实际测试附件是否被删除并使用占位符代替。
我已经使用 onerror 为任何有类似问题的人解决了这个问题。
我在主题目录的根目录下放置了一个文件夹,里面有一个简单的浅灰色占位符图像,因此用户永远无法删除它。
然后将以下内容添加到我的图片标签的末尾。当媒体库图像被错误删除时,似乎工作得很好。
<img src="<?php echo esc_url( $image_src[0] ); ?>" srcset="<?php echo esc_attr( $image_srcset ); ?>" sizes="(min-width: 1050px) 25vw, (min-width: 750px) 33.333vw, (min-width: 500px) 50vw, 100vw" alt="<?php echo $image_alt_text ?>" onerror="this.onerror=null;this.src='https://www.domain-name.co.uk/fallback-folder/missing-placeholder-img.jpg';">