如果第一个ACF Repeater字段为空,则打印内容

时间:2018-11-23 02:45:11

标签: php repeater advanced-custom-fields

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

我对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;
        }

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

3 个答案:

答案 0 :(得分:0)

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

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;
}

答案 1 :(得分:0)

答案 2 :(得分:0)

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

$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;

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