WooCommerce 将管理员自定义字段添加到简单订阅
WooCommerce add admin custom field(s) to simple subscriptions
在 WooCommerce 中,我启用了 WooCommerce Subscriptions 插件,它按照我的预期运行良好。
但是,我有一个来自客户的定制要求。我想在 Variable Subscriptions 和 Simple Subscriptions.
中创建产品时添加自定义字段
我使用以下代码在 变量订阅 中添加了自定义字段,它按照我的预期工作。这是我的代码。
<?php
// Showing fields for variable subscriptions
add_action('woocommerce_product_after_variable_attributes', 'show_WC_Product_Variable_Subscription_Variation_Custom_Fields', 10, 3);
// Saving fields for variable subscriptions
add_action('woocommerce_save_product_variation', 'save_WC_Product_Variable_Subscription_Variation_Custom_Fields', 10, 2);
function show_WC_Product_Variable_Subscription_Variation_Custom_Fields($loop, $variation_data, $variation) {
woocommerce_wp_text_input(
array(
'id' => "my_text_field{$loop}",
'name' => "my_text_field[{$loop}]",
'value' => get_post_meta($variation->ID, 'my_text_field', true),
'label' => __('Some label', 'woocommerce'),
)
);
}
function save_WC_Product_Variable_Subscription_Variation_Custom_Fields($variation_id, $loop) {
if (empty($variation_id)) return;
$text_field = $_POST['my_text_field'][$loop];
update_post_meta($variation_id, 'my_text_field', esc_attr($text_field));
}
这是它现在工作正常的样子。
如您在上面的屏幕截图中所见,最后一个标记为“某些标签”的字段.. 添加了我的自定义字段。
但是,我想添加我设置的相同字段 简单订阅。我是说。
如您所见,我希望在此处显示和保存相同的自定义字段..
我已经研究过,但还没有找到任何钩子。
有人可以指导我如何实现这一点。
更新:
将自定义字段添加到管理产品数据 设置 > 常规 选项卡 简单订阅:
// Showing custom fields on admin product settings "general" tab
add_action('woocommerce_product_options_general_product_data', 'add_admin_product_custom_fields', 10, 3);
function add_admin_product_custom_fields() {
global $post;
echo '<div class="product_custom_field show_if_simple show_if_subscription">';
woocommerce_wp_text_input( array(
'id' => 'my_text_field',
'name' => 'my_text_field',
'label' => __('Some label', 'woocommerce'),
) );
echo '</div>';
}
// Saving custom fields values from admin product settings
add_action('woocommerce_admin_process_product_object', 'save_admin_product_custom_fields_values');
function save_admin_product_custom_fields_values( $product ) {
if ( isset($_POST['my_text_field']) ) {
$product->update_meta_data( 'my_text_field', sanitize_text_field($_POST['my_text_field']) );
}
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
要在简单和可变的订阅更改中显示它:
echo '<div class="product_custom_field show_if_simple show_if_subscription">';
与:
echo '<div class="product_custom_field">';
复选框字段的添加:
// Showing custom fields on admin product settings "general" tab
add_action('woocommerce_product_options_general_product_data', 'add_admin_product_custom_checkbox_fields', 10, 3);
function add_admin_product_custom_checkbox_fields() {
global $post;
echo '<div class="product_custom_field show_if_simple show_if_subscription">';
echo '<p><strong>' . __("Mindesk e-Commerce", 'woocommerce') . '</strong></p>';
$value = get_post_meta($post->ID, 'mindesk_analytics_opt_out', true);
woocommerce_wp_checkbox(array(
'id' => "mindesk_analytics_opt_out",
'name' => "mindesk_analytics_opt_out",
'wrapper_class' => 'show_if_simple',
'label' => __(' Analytics', 'woocommerce'),
'value' => $value,
) );
echo '</div>';
}
// Saving custom fields values from admin product settings
add_action('woocommerce_admin_process_product_object', 'save_admin_product_custom_checkbox_fields_values');
function save_admin_product_custom_checkbox_fields_values( $product ) {
$value = isset($_POST['mindesk_analytics_opt_out']) ? 'yes' : 'no';
$product->update_meta_data('mindesk_analytics_opt_out', esc_attr($value) );
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
在 WooCommerce 中,我启用了 WooCommerce Subscriptions 插件,它按照我的预期运行良好。
但是,我有一个来自客户的定制要求。我想在 Variable Subscriptions 和 Simple Subscriptions.
中创建产品时添加自定义字段我使用以下代码在 变量订阅 中添加了自定义字段,它按照我的预期工作。这是我的代码。
<?php
// Showing fields for variable subscriptions
add_action('woocommerce_product_after_variable_attributes', 'show_WC_Product_Variable_Subscription_Variation_Custom_Fields', 10, 3);
// Saving fields for variable subscriptions
add_action('woocommerce_save_product_variation', 'save_WC_Product_Variable_Subscription_Variation_Custom_Fields', 10, 2);
function show_WC_Product_Variable_Subscription_Variation_Custom_Fields($loop, $variation_data, $variation) {
woocommerce_wp_text_input(
array(
'id' => "my_text_field{$loop}",
'name' => "my_text_field[{$loop}]",
'value' => get_post_meta($variation->ID, 'my_text_field', true),
'label' => __('Some label', 'woocommerce'),
)
);
}
function save_WC_Product_Variable_Subscription_Variation_Custom_Fields($variation_id, $loop) {
if (empty($variation_id)) return;
$text_field = $_POST['my_text_field'][$loop];
update_post_meta($variation_id, 'my_text_field', esc_attr($text_field));
}
这是它现在工作正常的样子。
如您在上面的屏幕截图中所见,最后一个标记为“某些标签”的字段.. 添加了我的自定义字段。
但是,我想添加我设置的相同字段 简单订阅。我是说。
如您所见,我希望在此处显示和保存相同的自定义字段..
我已经研究过,但还没有找到任何钩子。
有人可以指导我如何实现这一点。
更新:
将自定义字段添加到管理产品数据 设置 > 常规 选项卡 简单订阅:
// Showing custom fields on admin product settings "general" tab
add_action('woocommerce_product_options_general_product_data', 'add_admin_product_custom_fields', 10, 3);
function add_admin_product_custom_fields() {
global $post;
echo '<div class="product_custom_field show_if_simple show_if_subscription">';
woocommerce_wp_text_input( array(
'id' => 'my_text_field',
'name' => 'my_text_field',
'label' => __('Some label', 'woocommerce'),
) );
echo '</div>';
}
// Saving custom fields values from admin product settings
add_action('woocommerce_admin_process_product_object', 'save_admin_product_custom_fields_values');
function save_admin_product_custom_fields_values( $product ) {
if ( isset($_POST['my_text_field']) ) {
$product->update_meta_data( 'my_text_field', sanitize_text_field($_POST['my_text_field']) );
}
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
要在简单和可变的订阅更改中显示它:
echo '<div class="product_custom_field show_if_simple show_if_subscription">';
与:
echo '<div class="product_custom_field">';
复选框字段的添加:
// Showing custom fields on admin product settings "general" tab
add_action('woocommerce_product_options_general_product_data', 'add_admin_product_custom_checkbox_fields', 10, 3);
function add_admin_product_custom_checkbox_fields() {
global $post;
echo '<div class="product_custom_field show_if_simple show_if_subscription">';
echo '<p><strong>' . __("Mindesk e-Commerce", 'woocommerce') . '</strong></p>';
$value = get_post_meta($post->ID, 'mindesk_analytics_opt_out', true);
woocommerce_wp_checkbox(array(
'id' => "mindesk_analytics_opt_out",
'name' => "mindesk_analytics_opt_out",
'wrapper_class' => 'show_if_simple',
'label' => __(' Analytics', 'woocommerce'),
'value' => $value,
) );
echo '</div>';
}
// Saving custom fields values from admin product settings
add_action('woocommerce_admin_process_product_object', 'save_admin_product_custom_checkbox_fields_values');
function save_admin_product_custom_checkbox_fields_values( $product ) {
$value = isset($_POST['mindesk_analytics_opt_out']) ? 'yes' : 'no';
$product->update_meta_data('mindesk_analytics_opt_out', esc_attr($value) );
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。