我在集成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程序员,长期以来一直被困在这个问题上。
非常感谢
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/