如何解决如何在wordpress的wp_option中保存文本值
我正在尝试为woocommerce构建功能,并希望将这些数据保存到我的wp_option中。
function custom_before_price() {
$args = array(
'id' => 'custom_before_price_table1','label' => __( 'Before Price','cbp1' ),'class' => 'cbp-custom-field','desc_tip' => true,'description' => __( 'Enter the text before price.','cbpdes' ),);
woocommerce_wp_text_input( $args );
}
add_action( 'woocommerce_product_options_general_product_data','custom_before_price' );
解决方法
您应该使用add_option()。类似的东西
add_option( string $option,mixed $value = '',string $deprecated = '',string|bool $autoload = 'yes' )
,
将值保存到wp_options表不是正常的WooCommerce行为。 WooCommerce将产品元数据保存在wp_postmeta中。在wp_options中存储有关特定产品的数据有很多可能的弊端。特别是,如果您需要将数据从wp_options返回到产品管理员编辑器,则需要为此使用一种方法,因为WooCommerce希望使用wp_postmeta来获取自定义元。
通过WP Admin更新产品时,以下功能集将创建您的自定义输入并保存值。
/**
* Create custom meta
**/
function custom_before_price() {
$args = array(
'id' => 'custom_price','label' => __( 'Custom Price','cprice' ),'data_type' => 'text',// Let WooCommerce formats our field as price field
'description' => __( 'Enter the text before price.',);
woocommerce_wp_text_input( $args );
}
add_action( 'woocommerce_product_options_general_product_data','custom_before_price' );
/**
* Save custom meta
**/
add_action( 'woocommerce_process_product_meta','save_custom_field' );
function save_custom_field( $post_id ) {
global $wpdb;
/* Get Value */
$custom_field_value = isset( $_POST['custom_price'] ) ? $_POST['custom_price'] : '';
/* Save to _options table (requested answer) */
$option_name = $post_id.'-custom-price';
$wpdb->replace(
'wp_options',array(
'option_name' => $option_name,'option_value' => $custom_field_value,),array(
'%s','%s',)
);
/* Save to postmeta table (normal for woocommerce) */
$product = wc_get_product( $post_id );
$product->update_meta_data( 'custom_price',$custom_field_value );
$product->save();
}
,
function custom_before_price() {
$args = array(
'id' => 'custom_price',// Let WooCommerce formats our field as price field
'description' => __( 'Enter the text before price.',);
woocommerce_wp_text_input( $args );
}
add_action( 'woocommerce_product_options_general_product_data','custom_before_price' );
/**
* Save custom meta
**/
add_action( 'woocommerce_process_product_meta','save_custom_field' );
function save_custom_field( $post_id ) {
/* Get Value */
$custom_field_value = isset( $_POST['custom_price'] ) ? $_POST['custom_price'] : '';
/* Save to _options table (requested answer) */
$option_name = $post_id.'-custom-price';
add_option( $option_name,$custom_field_value );
/* its updates in wp_option also*/
update_option( $option_name,$custom_field_value );
/* Save to postmeta table (normal for woocommerce) */
$product = wc_get_product( $post_id );
$product->update_meta_data( 'custom_price',$custom_field_value );
$product->save();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。