Заменить пустое значение php, html
У меня небольшие проблемы со строкой кода.
Это поле цены, и когда цена не добавлена, я хочу, чтобы он вывел "NO PRICE", вместо этого он просто выводит пробел по умолчанию, вот код,
<p class="post-price"><?php cp_get_price( $post->ID, 'cp_price' );?> </p>
Я попробовал это,
<p class="post-price"><?php cp_get_price( $post->ID, 'cp_price' ); echo 'NO PRICE'?> </p>
но это показывает НЕТ ЦЕНЫ все время. Я пытаюсь сделать так, чтобы это показывалось только когда значение cp_price пусто.
Если бы кто-нибудь мог протянуть руку, я был бы очень признателен.
ОБНОВИТЬ:
Полный внутренний код,
function cp_ad_loop_price() {
global $post;
if ( $post->post_type == 'page' || $post->post_type == 'post' )
return;
?>
<div class="price-wrap">
<span class="tag-head"> </span><p class="post-price"><?php cp_get_price( $post->ID, 'cp_price' );?></p>
</div>
<?php
}
add_action( 'appthemes_before_post_title', 'cp_ad_loop_price' );
И интерфейс без значения,
<div class="price-wrap">
<span class="tag-head"> </span><p class="post-price"> </p>
</div>
интерфейс со значением,
<div class="price-wrap">
<span class="tag-head"> </span><p class="post-price">£500.00</p>
</div>
Надеюсь это поможет. Спасибо
функция cp_get_price,
if ( !function_exists('cp_get_price') ) {
function cp_get_price( $postid, $meta_field ) {
global $cp_options;
if ( get_post_meta( $postid, $meta_field, true ) ) {
$price_out = get_post_meta( $postid, $meta_field, true );
$price_out = cp_price_format( $price_out );
$price_out = cp_pos_currency( $price_out, 'ad' );
} else {
if ( $cp_options->force_zeroprice )
$price_out = cp_pos_currency( 0, 'ad' );
else
$price_out = ' ';
}
echo $price_out;
}
}
3 ответа
Я такой нуб. Все, что мне было нужно, это толчок в правильном направлении. Спасибо, ребята, теперь решили.
if ( !function_exists('cp_get_price') ) {
function cp_get_price( $postid, $meta_field ) {
global $cp_options;
if ( get_post_meta( $postid, $meta_field, true ) ) {
$price_out = get_post_meta( $postid, $meta_field, true );
$price_out = cp_price_format( $price_out );
$price_out = cp_pos_currency( $price_out, 'ad' );
} else {
if ( $cp_options->force_zeroprice )
$price_out = cp_pos_currency( 0, 'ad' );
else
$price_out = ' ';
}
echo $price_out;
}
}
Я редактировал эту строку
$price_out = ' ';
чтобы выглядеть так,
$price_out = 'NO PRICE';
Спасибо.
Если предположить, cp_get_price($post->ID, 'cp_price')
возвращает пустое значение вместо пробела, вы можете использовать оператор 'или', чтобы вернуть первое значение, которое оценивается как true
<?
$var = cp_get_price($post->ID, 'cp_price');
echo $var || 'NO PRICE';
?>
ОБНОВИТЬ:
Так как вы возвращаете пробел, вы можете использовать это:
<?
$var = cp_get_price($post->ID, 'cp_price');
echo ($var == ' ') ? 'NO PRICE' : $var;
?>
<?php echo cp_get_price( $post->ID, 'cp_price' ) ? cp_get_price( $post->ID, 'cp_price' ) : 'NO PRICE'; ?>