Заменить пустое значение 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">&nbsp;</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">&nbsp;</span><p class="post-price">&nbsp;</p>
</div>

интерфейс со значением,

<div class="price-wrap">
    <span class="tag-head">&nbsp;</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 = '&nbsp;';
    }

    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 = '&nbsp;';
}

echo $price_out;
}
}

Я редактировал эту строку

$price_out = '&nbsp;'; 

чтобы выглядеть так,

$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'; ?>
Другие вопросы по тегам