【问题标题】:Print content if first ACF Repeater field is empty如果第一个 ACF 中继器字段为空,则打印内容
【发布时间】:2019-04-25 16:12:40
【问题描述】:

我正在尝试使用 ACF 的转发器字段制作一个简单的文档管理系统。我需要打印一个按钮来下载附加到顶部转发器字段的文件(带有下载的大小和文件类型)。但如果顶部转发器字段为空,它应该打印“文件不可用”内容。

我对 PHP 还很陌生,但到目前为止这主要是可行的:

$repeater = get_field( 'document' )[0];

    if( $repeater ) {

        $fileurl = $repeater[ 'document' ][ 'url' ];
        $filesize = filesize( get_attached_file ($repeater[ 'file' ][ 'id' ]) );
        $filesize = size_format($filesize);
        $filetype = wp_check_filetype( get_attached_file ($repeater[ 'file' ][ 'id' ]));

        $download = '<div><a href="' . $repeater[ 'file' ][ 'url' ] . '">Download</a><div>' . $filesize . ' <span>' . $filetype[ 'ext' ] .'</span></div></div>' ;

                echo $download;
        }

当顶部转发器中有附件时,这会打印一个按钮到顶部转发器中的附件。如果顶部中继器中没有任何内容,它只会打印出死链接。这不行。如果第一个转发器中没有任何内容,我需要添加一个 else 条件或其他内容,以便它打印“文件不可用”内容。

    if(empty( $repeater )) {

        $unavailable = '<div>Unavailable<div>This document isn\'t ready yet. Please check back later.</div></div>' ;

                echo $unavailable;
        }

我已经尝试了很多不同的方法来做到这一点,例如上面的,我不知道我做错了什么。你能帮忙吗?

【问题讨论】:

    标签: php repeater advanced-custom-fields


    【解决方案1】:

    在显示这样的字段之前,您必须检查一个值:

    if( get_field('document'){
        ... // there is an attached file
    }
    else {
        $unavailable = '<div>Unavailable<div>This document isn\'t ready yet. Please check back later.</div></div>' ;
        echo $unavailable;
    }
    

    【讨论】:

    • 我想我已经声明了这个值:$repeater = get_field( 'document' )[0]; if( $repeater ) {
    【解决方案2】:

    【讨论】:

      【解决方案3】:

      我终于明白了!我认为我没有足够清楚地声明我的变量。

      $row = get_field( 'document' );
      $first_row = $row[0];
      $first_row_file = $first_row[ 'file' ];
      
      if( $first_row_file ) :
      
                  $download = '<div>Available!<div>This document is ready for download.</div></div>' ;
      
                          echo $download;
      
      else :
      
                  $unavailable = '<div>Unavailable!<div>This document isn\'t ready yet. Please check back later.</div></div>' ;
      
                          echo $unavailable;
      
      endif;
      

      现在我可以添加更复杂的内容(如下载按钮),以便在有文件下载时显示,并在没有文件时显示有用的消息。

      【讨论】:

        猜你喜欢
        • 2019-01-04
        • 2020-05-15
        • 2018-07-17
        • 2013-12-29
        • 1970-01-01
        • 1970-01-01
        • 2019-01-08
        • 1970-01-01
        • 2022-08-18
        相关资源
        最近更新 更多