Печатайте содержимое, если первое поле повторителя ACF пусто - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь создать простую систему управления документами с полем повторителя 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;
        }

Я пробовал много разных способов сделать это,такие как выше, и я не знаю, что я делаю неправильно.Вы можете помочь?

Ответы [ 3 ]

0 голосов
/ 23 ноября 2018

Я думаю, у них был ваш случай на форуме поддержки ACF: https://support.advancedcustomfields.com/forums/topic/if-repeater-field-if-empty-else-doesnt-work/

0 голосов
/ 26 ноября 2018

Я наконец получил это!Я думаю, что я недостаточно четко объявил свои переменные.

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

Теперь я могу добавить более сложный контент (например, кнопку загрузки) для отображения, когда есть файл для загрузки, и полезное сообщение, когда естьнет.

0 голосов
/ 23 ноября 2018

Вы должны проверить значение перед отображением поля, подобного этому:

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