если утверждение внутри эха с использованием троичных операторов
У меня есть следующее эхо-утверждение:
echo '<li><a href="'. esc_url(add_query_arg( 'booking-id', $the_query->post->ID, site_url( '/pay-deposit/' ) )) .'">Pay deposit</a></li>';
Я хочу добавить класс "отключен" в ссылку, когда параметр = 1
Вот что я пытаюсь сделать, используя тернарные операторы
$is_deposit_paid = get_post_meta( $the_query->post->ID, 'deposit_paid', true );
echo '<li><a '.( $is_deposit_paid = 1) ? "disabled" .' href="'. esc_url(add_query_arg( 'booking-id', $the_query->post->ID, site_url( '/pay-deposit/' ) )) .'">Pay deposit</a></li>';
Однако это приводит к синтаксической ошибке. Как мне правильно это написать?
2 answers
Необходимо решить три проблемы:
Тернарный оператор требует... 3 аргумента (сюрприз!), Поэтому после второго вам нужно добавить
:
и строку, которую вы хотите в случаеelse
.Все троичное выражение должно быть заключено в квадратные скобки (не условие), прежде чем вы примените к нему оператор точки при построении строки.
Вам нужно сравнивать, а не назначать (
==
вместо=
)
Так что этого было бы достаточно это:
$is_deposit_paid = get_post_meta( $the_query->post->ID, 'deposit_paid', true );
echo '<li><a '.( $is_deposit_paid == 1 ? "disabled" : "") .
' href="'. esc_url(add_query_arg( 'booking-id', $the_query->post->ID,
site_url( '/pay-deposit/' ) )) .
'">Pay deposit</a></li>';
Просто используйте переменную сразу после вызова функции, если класс "отключен" или ничего (""):
$is_deposit_paid = get_post_meta( $the_query->post->ID, 'deposit_paid', true );
$class = ($is_deposit_paid)?"disabled":"";
echo "<li><a $class href='". esc_url(add_query_arg( 'booking-id', $the_query->post->ID, site_url( '/pay-deposit/' ) )) ."'>Pay deposit</a></li>";
Если вам нужен только класс, вы можете даже немедленно проверить вызов функции:
$class = (get_post_meta( $the_query->post->ID, 'deposit_paid', true ))?"disabled":"";