Woocommerce 优惠券添加自定义复选框
Woocommerce coupons adding custom checkbox
我在 functions.php 中对这个简单的功能已经了解得够多了,让我为优惠券添加一个复选框。但是,一旦我 save/update 一张优惠券,我的复选框值 (check/unchecked) 就不会被提交(所以复选框总是未选中)。换句话说,当我 update/save 时,我无法让它在 postmetas 的 meta_value 列中将值更新为 yes。复选框就在那里,我就是不能使用它……非常令人沮丧!请对我做错的任何问题提出意见:)
function add_coupon_revenue_dropdown_checkbox() {
$post_id = $_GET['post'];
woocommerce_wp_checkbox( array( 'id' => 'include_stats', 'label' => __( 'Coupon check list', 'woocommerce' ), 'description' => sprintf( __( 'Includes the coupon in coupon check drop-down list', 'woocommerce' ) ) ) );
$include_stats = isset( $_POST['include_stats'] ) ? 'yes' : 'no';
update_post_meta( $post_id, 'include_stats', $include_stats );
do_action( 'woocommerce_coupon_options_save', $post_id );
}add_action( 'woocommerce_coupon_options', 'add_coupon_revenue_dropdown_checkbox', 10, 0 );
我要影响的部分是:
wp-content/plugins/woocommerce/includes/admin/meta-boxes/class-wc-meta-box-coupon-data.php
您的代码存在的问题是,您试图在为其生成 html 的同一函数中保存复选框的值。这行不通。您需要将当前功能分成两部分 运行 在两个不同的 WooCommerce 挂钩上。
首先是显示实际的复选框:
function add_coupon_revenue_dropdown_checkbox() {
woocommerce_wp_checkbox( array( 'id' => 'include_stats', 'label' => __( 'Coupon check list', 'woocommerce' ), 'description' => sprintf( __( 'Includes the coupon in coupon check drop-down list', 'woocommerce' ) ) ) );
}
add_action( 'woocommerce_coupon_options', 'add_coupon_revenue_dropdown_checkbox', 10, 0 );
第二种是在处理提交的表单时保存复选框的值。
function save_coupon_revenue_dropdown_checkbox( $post_id ) {
$include_stats = isset( $_POST['include_stats'] ) ? 'yes' : 'no';
update_post_meta( $post_id, 'include_stats', $include_stats );
}
add_action( 'woocommerce_coupon_options_save', 'save_coupon_revenue_dropdown_checkbox');
我在 functions.php 中对这个简单的功能已经了解得够多了,让我为优惠券添加一个复选框。但是,一旦我 save/update 一张优惠券,我的复选框值 (check/unchecked) 就不会被提交(所以复选框总是未选中)。换句话说,当我 update/save 时,我无法让它在 postmetas 的 meta_value 列中将值更新为 yes。复选框就在那里,我就是不能使用它……非常令人沮丧!请对我做错的任何问题提出意见:)
function add_coupon_revenue_dropdown_checkbox() {
$post_id = $_GET['post'];
woocommerce_wp_checkbox( array( 'id' => 'include_stats', 'label' => __( 'Coupon check list', 'woocommerce' ), 'description' => sprintf( __( 'Includes the coupon in coupon check drop-down list', 'woocommerce' ) ) ) );
$include_stats = isset( $_POST['include_stats'] ) ? 'yes' : 'no';
update_post_meta( $post_id, 'include_stats', $include_stats );
do_action( 'woocommerce_coupon_options_save', $post_id );
}add_action( 'woocommerce_coupon_options', 'add_coupon_revenue_dropdown_checkbox', 10, 0 );
我要影响的部分是:
wp-content/plugins/woocommerce/includes/admin/meta-boxes/class-wc-meta-box-coupon-data.php
您的代码存在的问题是,您试图在为其生成 html 的同一函数中保存复选框的值。这行不通。您需要将当前功能分成两部分 运行 在两个不同的 WooCommerce 挂钩上。
首先是显示实际的复选框:
function add_coupon_revenue_dropdown_checkbox() {
woocommerce_wp_checkbox( array( 'id' => 'include_stats', 'label' => __( 'Coupon check list', 'woocommerce' ), 'description' => sprintf( __( 'Includes the coupon in coupon check drop-down list', 'woocommerce' ) ) ) );
}
add_action( 'woocommerce_coupon_options', 'add_coupon_revenue_dropdown_checkbox', 10, 0 );
第二种是在处理提交的表单时保存复选框的值。
function save_coupon_revenue_dropdown_checkbox( $post_id ) {
$include_stats = isset( $_POST['include_stats'] ) ? 'yes' : 'no';
update_post_meta( $post_id, 'include_stats', $include_stats );
}
add_action( 'woocommerce_coupon_options_save', 'save_coupon_revenue_dropdown_checkbox');