если первое расширенное пользовательское поле пусто, используйте другое в теге ‹a›

Итак, я использую расширенные настраиваемые поля для Wordpress, и у меня есть подполе повторителя, где вы можете либо связать файл для загрузки, либо выбрать ссылку на страницу в другом поле для тега моей страницы. Мои два поля называются: fil_url page_url

Это моя обычная разметка, которая возвращает единицу, в данном случае загруженный файл. php/html:

<a href="<?php the_sub_field('fil_url')):) ?>open</a>

Итак, что мне нужно, так это оператор if, который говорит, что если fil_url пуст, то вместо этого отображается page_url. Но я не знаю, как это написать. Помогите пожалуйста :)


person Carl Papworth    schedule 18.12.2013    source источник


Ответы (2)


Поработав с сообщением @diggy, я нашел это решение:

<?php
$href = ( get_sub_field( 'fil_url' ) ) ? get_sub_field( 'fil_url' ) : get_sub_field( 'page_url' );
<?>
person Carl Papworth    schedule 18.12.2013

person    schedule
comment
Это выглядит хорошо, однако я не могу заставить его работать. кажется, какая-то ошибка в $href = ( ! empty( get_the_sub_field( 'fil_url' ) ) ) ? get_the_sub_field( 'fil_url' ) : get_the_sub_field( 'page_url' ); - person Carl Papworth; 18.12.2013
comment
Я не знаком с ACF, но быстрый поиск в Google показывает, что вам, вероятно, нужно использовать get_sub_field вместо get_the_sub_field - person diggy; 18.12.2013
comment
(! empty( get_sub_field( 'fil_url' )))проверяет, пуст ли 'fil_url' или href="" пуст? - person Carl Papworth; 18.12.2013
comment
Он проверяет, пусто ли подполе. - person diggy; 18.12.2013
comment
Насколько я могу судить, в синтаксисе нет ничего плохого. В чем ошибка? Вы проверили поле родительского повторителя? например if(get_field('repeater')){while(has_sub_field('repeater')){ - person diggy; 18.12.2013
comment
Я попробовал это: $href = ( get_sub_field( 'fil_url' ) ) ) ? get_sub_field( 'fil_url' ) : get_sub_field( 'page_url' ); и, как ни странно, это сработало! - person Carl Papworth; 18.12.2013
comment
@diggy ваш код неверен empty() вернет ошибку Can't use method return value in write context. Вы должны сделать что-то вроде этого $file_url = get_sub_field( 'fil_url' ); $href = ( ! empty( $file_url ) ) ? get_sub_field( 'fil_url' ) : get_sub_field( 'page_url' ); - person Rahil Wazir; 18.12.2013
comment
tnx Rahil, я предполагал, что ACF работает аналогично get_post_meta, но, очевидно, это не так :) не стесняйтесь публиковать это как новый ответ - person diggy; 18.12.2013
comment
Как уже упоминалось, это также сработало, просто удалив оператор ( !empty в начале! (и закрывающая скобка, очевидно) - person Carl Papworth; 18.12.2013