需要在WC供应商页面中保存保证金插件的输入字段方面的帮助

时间:2018-01-20 作者:RJM

我在集成WooCommerce安全存款插件的一些输入字段时遇到问题(https://codecanyon.net/item/woocommerce-security-deposits-wordpress-plugin/19988389) 进入我的网站前端。

我正在尝试将这些字段输入WC Vendors Pro产品编辑表单,以便我网站上的用户可以调整他们的保证金价值等。

我有以下保证金输入,它通过第二块代码中的函数将其保存到产品元数据中。

<?php woocommerce_wp_checkbox( array(
                        \'id\' => \'_wc_security_deposits_enable\' ,
                        \'label\' => __( \'Collect security deposit\' , \'woocommerce-security-deposits\' ) ,
                        \'description\' => __( \'Enable this to collect a security deposit for this product\' , \'woocommerce-security-deposits\' ) ,
                        \'desc_tip\' => true ) );
                    ?>
功能如下:

public function process_product_meta( $post_id ){
        $product = wc_get_product( $post_id );

        $enable_security_deposit = isset( $_POST[ \'_wc_security_deposits_enable\' ] ) ? \'yes\' : \'no\';

        $amount_type = ( isset( $_POST[ \'_wc_security_deposits_amount_type\' ] ) &&
            ( $_POST[ \'_wc_security_deposits_amount_type\' ] === \'fixed\' ||
                $_POST[ \'_wc_security_deposits_amount_type\' ] === \'percent\' ) ) ?
            $_POST[ \'_wc_security_deposits_amount_type\' ] : \'fixed\';

        $amount = isset( $_POST[ \'_wc_security_deposits_deposit_amount\' ] ) &&
        is_numeric( $_POST[ \'_wc_security_deposits_deposit_amount\' ] ) ? floatval( $_POST[ \'_wc_security_deposits_deposit_amount\' ] ) : 0.0;

        if( $amount <= 0 ){
            $enable_security_deposit = \'no\';
            $amount = \'\';
        }

        $multiply_by_persons = isset( $_POST[ \'_wc_security_deposits_multiply_per_persons\' ] ) ? \'yes\' : \'no\';
        $multiply_by_quantity = isset( $_POST[ \'_wc_security_deposits_multiply_by_quantity\' ] ) ? \'yes\' : \'no\';

        $product->update_meta_data( \'_wc_security_deposits_enable\' , $enable_security_deposit );
        $product->update_meta_data( \'_wc_security_deposits_multiply_by_quantity\' , $multiply_by_quantity );
        $product->update_meta_data( \'_wc_security_deposits_amount_type\' , $amount_type );
        $product->update_meta_data( \'_wc_security_deposits_deposit_amount\' , $amount );

        if( $product->is_type( \'booking\' ) && $product->has_persons() ){
            $product->update_meta_data( \'_wc_security_deposits_multiply_per_persons\' , $multiply_by_persons );
        }
        $product->save();

    }
我曾尝试在WP供应商插件的单独页面中创建一个字段,该字段模仿启用保证金的复选框,但我显然无法使其与产品元数据保持一致-它只是视觉效果,无法正常工作。

非常感谢您的帮助,我不是PHP程序员,长期以来一直被困在这个问题上。

非常感谢

1 个回复
SO网友:Digitalchild

您需要在产品编辑表单中添加自定义字段,如果正确设置输入id的格式,则会自动进行保存。

WCVendors_Pro_Form_Helper::input( array(  
     \'type\'      => \'checkbox\',
     \'post_id\'   => $object_id, 
     \'id\'     => \'wcv_custom_product__wc_security_deposits_enable\', 
     \'label\'    => __( \'Ingredients\', \'wcvendors-pro\' ), 
     \'placeholder\'   => __( \'Ingredients\', \'wcvendors-pro\' ), 
     \'desc_tip\'    => \'true\', 
     \'description\'   => __( \'Enable this to collect a security deposit for this product\', \'wcvendors-pro\' ), 
) );
将此添加到产品编辑中。php模板。覆盖模板并将其放置在主题目录中。请参阅我的文档,了解如何在此处覆盖模板:

https://docs.wcvendors.com/knowledge-base/changing-the-vendor-templates/

结束