Я заметил пару вещей.
Первое - стилистическое решение, но я не думаю, что при таком простом HTML это требует закрытия и повторного открытия PHP, и вместо этого вы могли бы / должны простоecho
код.
Второй - еще одно стилистическое решение, но обычно переменная ID
чаще определяется как $post_id
.Абсолютно несущественно, но я изменил его в моем примере.
Третий - вам действительно нужен доступ к global $wp_query
вместо простого определения идентификатора записи с помощью функции get_the_ID()
или даже получить доступ к global $post
напрямую?Я оставил это там на случай, если вы используете его по определенной причине, но я бы подумал, нужно ли вам это вызывать, и просто заменить первые две строки на $post_id = get_the_ID();
Четвертый -Ваше окончательное утверждение является заявлением else
, но вы передаете ему условия.Если вы передаете условия, это должен быть оператор else if
, операторы else
просто должны содержать значение по умолчанию, при условии, что все остальные операторы if else
вернули false до этого момента.Это должно быть } else {
или } else if( empty( $Trail ) ){
Пятое - у вас есть странные пустые открывающие / закрывающие теги PHP в конце вашего кода.Вам это не нужно.
Шестое - Теперь, когда я засыпал вас чем-то (извините!), Я начну решать вашу проблему.Отчасти это то, что вы на самом деле не определяете переменные $ecpt_trail
и $Trail
.Если вы хотите, чтобы они были определены, вы можете определить их в ваших if
выражениях следующим образом:
if( $ecpt_trail = get_post_meta( $post_id, 'ecpt_trail', true ) ){
// <li>…</li>
} else if( empty( $ecpt_trail ) ){
// <li>…</li>
}
Вот как будет выглядеть этот код:
<?php
global $wp_query;
$post_id = $wp_query->post->ID;
if( $ecpt_trail = get_post_meta( $post_id, 'ecpt_trail', true ) ){
echo '<li><i class="fa fa-plus-circle fa-lg"></i> New w/ Theatrical Trailer</li>';
} else if( empty( $ecpt_trail ) ){
echo '<li class="minus"><i class="fa fa-minus-circle fa-lg"></i> New w/o Theatrical Trailer</li>';
} else if( $Trail = get_post_meta( $post_id, 'Trail', true ) ){
echo '<li><i class="fa fa-plus-circle fa-lg"></i> Old w/ Theatrical Trailer</li>';
} else if( empty( $Trail ) ){
echo '<li class="minus"><i class="fa fa-minus-circle fa-lg"></i> Old w/o Theatrical Trailer</li>';
}
?>
С учетом сказанноговы также, вероятно, фактически не проходите мимо второго оператора if
, который объясняет, почему вы не видите старые трейлеры, учитывая, что вы в основном обрабатываете два возможных результата первого оператора if.Если первый оператор if
возвращает true, он останавливается там и выдает New w/ Trailer
, а если нет;поскольку вы на самом деле не определяете $ecpt_trailer
;тот второй возвращает true, и он останавливается, выводя New w/o Trailer
.Это единственные два результата этого одного условия.
Теперь я также думаю, что у вас есть много избыточных мест, которые можно устранить, - и вы могли бы также упростить это для себя, пройдя через всестарые сообщения со старым мета-ключом и использованием add_post_meta()
для клонирования значения.Тогда вам нужно будет беспокоиться только об одном мета-ключе, и вы можете отказаться от старого.
Кроме того, get_post_meta()
вернет false
при сбое, вы можете использовать его для своегопреимущество, а не беспокойство, если оно empty
или нет, так как оно также вернет истинное значение в случае успеха.
Вот как я мог бы это сделать - поскольку оба условия отказа не сообщают вам, если *На самом деле 1056 * - это Новое без или Старое без:
<?php
$post_id = get_the_ID();
if( $trailer = get_post_meta( $post_id, 'ecpt_trail', true ) ){
// New Trailer Exists, $trailer now defined as `ecpt_trail` value
echo '<li><i class="fa fa-plus-circle fa-lg"></i> New w/ Theatrical Trailer</li>';
} else if( $trailer = get_post_meta( $post_id, 'Trail', true ) ){
// New Trailer not there, $trailer now defined as `Trail` value
echo '<li><i class="fa fa-plus-circle fa-lg"></i> Old w/ Theatrical Trailer</li>';
} else {
// Neither Trailer exists, $trailer now defined as `false`
echo '<li class="minus"><i class="fa fa-minus-circle fa-lg"></i> Either w/o Theatrical Trailer</li>';
}