尝试构建连接到WooCommerce的简单存款代码

时间:2020-03-25 作者:Thescriptkiddy25

我一直在尝试为客户网站拼凑一个小代码,以包含一个简单的自动存款功能。我对PHP非常基础,我将从2009年开始学习VB知识,所以让我放松一下。试图利用这个项目来获取一些知识。

The Goal

在产品页面上创建一个复选框,如果选中该复选框,则该产品还将显示产品价格下50%的存款金额,在购物车中设置存款条件的项目将默认当前订单付款为总金额的50%。在有押金的订单后,使用“创建新订单”;存款余额;。

The Problem
它只起了一半作用。整个网站都在更新价格,但我无法让复选框起作用。我还没有尝试用剩余部分实施新秩序。

我尝试了复选框的if语句:

function custom_fields_save_seo( $post_id ){
$woocommerce_checkbox = ( $_POST[\'deposit_checkbox\'] );
 if (isset ($woocommerce_checkbox))
     update_post_meta( $post_id, \'_deposit_checkbox\', true ) ;
}
这是我到目前为止所做的,它成功地改变了整个网站的产品价格。

function add_custom_fields_seo() {
     global $woocommerce, $post;
       // woocommerce_wp_text_input(
       //  array(
         //       \'id\'      => \'_deposit_price\',
          //      \'label\'   => __( \'Deposit price($)\', \'woocommerce\' ),
          //      \'placeholder\' => \'15\',
           //     \'desc_tip\' => \'true\',
            //    \'description\' => __( \'Enter the custom deposit price here.\', \'woocommerce\' )
        // )
            
   //  );
        woocommerce_wp_checkbox( 
        array(
        \'id\'          => \'deposit_checkbox\',
        \'label\'         => __(\'Agreegation Policy.\'),
        \'required\'  => false,
    ));
    
    
  }
add_action( \'woocommerce_product_options_general_product_data\', \'add_custom_fields_seo\');

function custom_fields_save_seo( $post_id ){
$woocommerce_text_field = sanitize_text_field( $_POST[\'_deposit_price\'] );
if( is_numeric( $woocommerce_text_field ) || empty( $woocommerce_text_field ) ){
     update_post_meta( $post_id, \'_deposit_price\', esc_attr( $woocommerce_text_field ) );
}
}
add_action( \'woocommerce_process_product_meta\', \'custom_fields_save_seo\' );

function filter_woocommerce_get_price( $price, $product ){
$product_id = $product->get_id();
$deposit_price = get_post_meta( $product_id,\'_phive_book_price\' / 2, true );
if( ! empty( $deposit_price )  ) { 
    return $deposit_price;
}
return 0;
}
add_filter( \'woocommerce_get_price\', \'filter_woocommerce_get_price\', 10, 2 );
function filter_woocommerce_get_price_html( $price, $product ){
$product_id = $product->get_id();
$product_price = get_post_meta( $product_id, \'_phive_book_price\', true );
$deposit_price = $product_price / 2;
if( ! empty( $deposit_price )  ) {
    return wc_price($product_price) . \' <i>Deposit: \' . wc_price($deposit_price) . \'</i>\';
}
return wc_price( $product_price );
}
add_filter( \'woocommerce_get_price_html\', \'filter_woocommerce_get_price_html\', 10, 2 );
add_filter( \'woocommerce_cart_product_price\', \'filter_woocommerce_get_price_html\', 10, 2 );


function filter_woocommerce_cart_product_subtotal( $product_subtotal, $product, $quantity ){
$product_id = $product->get_id();
$product_price = get_post_meta( $product_id, \'_phive_book_price\', true );
$deposit_price = $product_price / 2;
if( ! empty( $deposit_price )  ) {
     return wc_price( $product_price * $quantity ) . \' <i>Deposit: \' . wc_price( $deposit_price * $quantity ) . \'</i>\';
}
return wc_price( $product_price * $quantity );
}
add_filter( \'woocommerce_cart_product_subtotal\', \'filter_woocommerce_cart_product_subtotal\', 10, 3 );
感谢您的帮助!

1 个回复
SO网友:Sabir Abdul Gafoor Shaikh

尝试此更新的代码。应该可以:您可以查看此url以了解更多信息https://awhitepixel.com/blog/woocommerce-product-data-custom-fields-tabs/

add_action( \'woocommerce_product_options_general_product_data\', \'add_custom_fields_seo\');

function custom_fields_save_seo( $post_id ){
$product = wc_get_product($post_id);
$num_package = isset($_POST[\'_deposit_price\']) ? $_POST[\'_deposit_price\'] : \'\';
$product->update_meta_data(\'_deposit_price\', sanitize_text_field($num_package));
$product->save();

}
add_action( \'woocommerce_process_product_meta\', \'custom_fields_save_seo\' );