если утверждение внутри эха с использованием троичных операторов


У меня есть следующее эхо-утверждение:

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

Однако это приводит к синтаксической ошибке. Как мне правильно это написать?

Author: Sam Skirrow, 2015-12-01

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>';
 3
Author: trincot, 2015-12-01 19:17:35

Просто используйте переменную сразу после вызова функции, если класс "отключен" или ничего (""):

$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":"";
 1
Author: Jan, 2015-12-01 19:19:19