如果第一个 ACF Repeater 字段为空则打印内容
Print content if first ACF Repeater field is empty
我正在尝试使用 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;
}
当顶部转发器中有附件时,这会在顶部转发器中打印一个附件的按钮。如果顶部中继器中没有任何内容,它只会打印出死link。这不行。我需要添加一个 else 条件或其他条件,以便在第一个转发器中没有内容时打印 "file not available" 内容。
if(empty( $repeater )) {
$unavailable = '<div>Unavailable<div>This document isn\'t ready yet. Please check back later.</div></div>' ;
echo $unavailable;
}
我已经尝试了很多不同的方法来做到这一点,例如上面的方法,但我不知道我做错了什么。你能帮忙吗?
您必须在显示这样的字段之前检查值:
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;
}
我想他们在 ACF 支持论坛上有你的案例:https://support.advancedcustomfields.com/forums/topic/if-repeater-field-if-empty-else-doesnt-work/
我终于明白了!我想我没有足够清楚地声明我的变量。
$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;
现在我可以添加更复杂的内容(如下载按钮)以在有文件下载时显示,并在没有文件时显示有用消息。
我正在尝试使用 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;
}
当顶部转发器中有附件时,这会在顶部转发器中打印一个附件的按钮。如果顶部中继器中没有任何内容,它只会打印出死link。这不行。我需要添加一个 else 条件或其他条件,以便在第一个转发器中没有内容时打印 "file not available" 内容。
if(empty( $repeater )) {
$unavailable = '<div>Unavailable<div>This document isn\'t ready yet. Please check back later.</div></div>' ;
echo $unavailable;
}
我已经尝试了很多不同的方法来做到这一点,例如上面的方法,但我不知道我做错了什么。你能帮忙吗?
您必须在显示这样的字段之前检查值:
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;
}
我想他们在 ACF 支持论坛上有你的案例:https://support.advancedcustomfields.com/forums/topic/if-repeater-field-if-empty-else-doesnt-work/
我终于明白了!我想我没有足够清楚地声明我的变量。
$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;
现在我可以添加更复杂的内容(如下载按钮)以在有文件下载时显示,并在没有文件时显示有用消息。