Wordpress自定义字段

时间:2014-03-10 05:52:57

标签: php wordpress woocommerce

我是PHP的新手,所以这让我感到困惑。我正在使用Wordpress的Woocommerce插件,我正在尝试添加自定义字段来显示某些产品的租赁价格。但是,并非所有产品都有租赁选项,所以我希望这只显示在我提供租赁价格的产品上。

这是我正在使用的代码,工作正常。唯一的问题是它显示我没有指定租赁价格的产品的租金价格为0美元。而不是显示$ 0,我只是希望它根本不显示。

//add rental field
add_action( 'woocommerce_product_options_pricing', 'wc_rent_product_field' );
function wc_rent_product_field() {
    woocommerce_wp_text_input( array( 'id' => 'rent_price', 'class' => 'wc_input_price short', 'label' => __( 'rent', 'woocommerce' ) . ' (' . get_woocommerce_currency_symbol() . ')' ) );
}

//save rental field
add_action( 'save_post', 'wc_rent_save_product' );
function wc_rent_save_product( $product_id ) {
    // If this is a auto save do nothing, we only save when update button is clicked
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
        return;
    if ( isset( $_POST['rent_price'] ) ) {
        if ( is_numeric( $_POST['rent_price'] ) )
            update_post_meta( $product_id, 'rent_price', $_POST['rent_price'] );
    } else delete_post_meta( $product_id, 'rent_price' );
}

//display rental field
add_action( 'woocommerce_single_product_summary', 'wc_rent_show', 5 );
function wc_rent_show() {
    global $product;
    // Do not show this on variable products
    if ( $product->product_type <> 'variable' ) {
        $rent = get_post_meta( $product->id, 'rent_price', true );
        echo '<div class="woocommerce_msrp">';
        _e( 'Rent: ', 'woocommerce' );
        echo '<span class="woocommerce-rent-price">' . woocommerce_price( $rent ) . '</span>';
        echo '</div>';
    }
}

任何人都可以帮忙吗?我在互联网上寻找答案,但似乎已经过了我的脑袋。

2 个答案:

答案 0 :(得分:0)

  if ( $product->product_type <> 'variable' ) {
    $rent = get_post_meta( $product->id, 'rent_price', true );
    if($rent)>0
    {
    echo '<div class="woocommerce_msrp">';
    _e( 'Rent: ', 'woocommerce' );
    echo '<span class="woocommerce-rent-price">' . woocommerce_price( $rent ) . '</span>';
    echo '</div>';
  }
}

答案 1 :(得分:0)

这正是我所寻找的,经过对上述答案的一点调整后,以下代码仅显示具有租赁价格的产品的年租金价格。它还命令租赁价格显示在单一产品和存档页面上的RRP和折扣价格之后。

//add rental field
add_action( 'woocommerce_product_options_pricing', 'wc_rent_product_field' );
function wc_rent_product_field() {
    woocommerce_wp_text_input( array( 'id' => 'rent_price', 'class' => 'wc_input_price short', 'label' => __( 'Annual Rental', 'woocommerce' ) . ' (' . get_woocommerce_currency_symbol() . ')' ) );
}

//save rental field
add_action( 'save_post', 'wc_rent_save_product' );
function wc_rent_save_product( $product_id ) {
    // If this is a auto save do nothing, we only save when update button is clicked
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
        return;
    if ( isset( $_POST['rent_price'] ) ) {
        if ( is_numeric( $_POST['rent_price'] ) )
            update_post_meta( $product_id, 'rent_price', $_POST['rent_price'] );
    } else delete_post_meta( $product_id, 'rent_price' );
}

//display rental field
add_action( 'woocommerce_single_product_summary', 'wc_rent_show', 20 );
function wc_rent_show() {
    global $product;
    // Do not show this on variable products
    if ( $product->product_type <> 'variable' ) {
        $rent = get_post_meta( $product->id, 'rent_price', true );
    if ($rent > 0) {
        echo '<div class="woocommerce_msrp">';
        _e( 'Annual Rental: ', 'woocommerce' );
        echo '<span class="woocommerce-rent-price">' . woocommerce_price( $rent ) . '</span>';
        echo '</div>';
    }
    }
}

// Optional: To show on archive pages
add_action( 'woocommerce_after_shop_loop_item_title', 'wc_rent_show', 50 );