我有一个ACF"选项页",里面有一个占位符图像,如果客户端错误地从帖子/页面中删除了该图像,则返回到该页面。我正在使用以下代码来处理这种情况。
<?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; ?>
一旦保存了页面或帖子,这就可以正常工作。
但是
我遇到的问题是,如果页面/帖子之前与图像一起保存,然后用户直接从媒体库中删除图像,则该字段不会变为"空",因此内容会消失,而不是回到我希望的占位符图像。
关于如何处理直接从媒体库中删除的图像,有什么建议吗?
谢谢。
您可以使用attachment_url_to_postid。使用此函数,您可以从图片url中获取帖子id。如果post-id不存在,则用户之前删除了附件。因此,根据该函数的结果,您可以实际测试附件是否被删除,并使用占位符。
我已经为任何有类似问题的人使用oneror解决了这个问题。
我在主题目录的根目录中放了一个文件夹,里面有一个简单的浅灰色占位符图像,所以用户永远不会删除它。
然后在我的图像标签末尾添加了以下内容。当媒体库图像被错误删除时,似乎可以完美地工作。
<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';">