从WordPress高级自定义字段中删除前端依赖项


Removing frontend dependancies from WordPress Advanced Custom Fields

我正在尝试使我的主题完全独立于ACF的get_fieldthe_field(因此,如果插件被禁用,站点将不会中断)。我有一个通过自定义字段加载的图像 'slider_image' 作为内联background-image.我需要调用图像的 URL。是否可以将其加载到内联 html 中?这是工作代码(带有ACF的the_field):

    <!-- Hero Image -->
    <section class="hero" style="background: url('<?php the_field('slider_image'); ?>') no-repeat center center; background-size: cover;">
    </section>
    <!-- End Hero Image -->

如果插件被禁用,如何使用get_post_meta重写此语句?

我试过:

<section class="hero" style="background: url('<?php echo get_post_meta( get_the_ID(), 'slider_image', true ); ?>') no-repeat center center; background-size: cover;">

其中返回:

<section class="hero" style="background: url('98') no-repeat center center; background-size: cover;">

这必须是附加图像的帖子的 ID。要抓取当前图像,您必须使用一些嵌入式WP功能,例如wp_get_attachment_image(如果要打印图像标签)或wp_get_attachment_image_src(如果需要图像属性)

例如,在您

的情况下,当您只想url图像时,您可以执行以下操作:

$img_id = get_post_meta( get_the_ID(), 'slider_image', true );
$image_attr = wp_get_attachment_image_src( $img_id, 'large' ); //returns false or array
if ( $image_attr ) {
    $img_url = $image_attr[0]; ?>
    <section class="hero" style="background: url('<?php echo $img_url; ?>') no-repeat center center; background-size: cover;">
<?php } ?>