我使用本教程为我的产品创建了一个自定义字段,但我需要为此字段设置默认值。我已经创建了数百种产品,我也需要更新此字段。然后我使用这个值来订购产品。
这是完整的代码:
// Display Fields
add_action('woocommerce_product_options_general_product_data', 'woocommerce_product_custom_fields');
// Save Fields
add_action('woocommerce_process_product_meta', 'woocommerce_product_custom_fields_save');
function woocommerce_product_custom_fields()
{
global $woocommerce, $post;
echo '<div class="product_custom_field">';
// Custom Product Text Field
woocommerce_wp_text_input(
array(
'id' => 'priority',
'placeholder' => 'Priority of the product - values a>b',
'label' => __('Priority of the product', 'woocommerce'),
'desc_tip' => 'true',
//'default' => '0',
)
);
echo '</div>';
}
function woocommerce_product_custom_fields_save($post_id)
{
// Custom Product Text Field
$woocommerce_custom_product_text_field = $_POST['priority'];
if (!empty($woocommerce_custom_product_text_field))
update_post_meta($post_id, 'priority', esc_attr($woocommerce_custom_product_text_field));
}
function cw_add_postmeta_ordering_args( $args_sort_cw ) {
$cw_orderby_value = isset( $_GET['orderby'] ) ? wc_clean( $_GET['orderby'] ) :
apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
switch( $cw_orderby_value ) {
case 'priority':
$args_sort_cw['orderby'] = 'meta_value';
$args_sort_cw['order'] = 'asc';
$args_sort_cw['meta_key'] = 'priority';
break;
}
我找不到可行的解决方案,所以我恳请您提供建议。我期望的是,每个现有产品都会设置此值,并且在创建新产品时将显示默认值。那么就应该按照这个值来排序。感谢您的帮助!
根据第一个答案进行编辑:数据库中的数据不会更新。在前端我只能看到我手动更改的产品,而看不到使用此功能添加 0 的产品。当我尝试将更改后的值更改回 0 时,它不会更新。实际上我只需要一个可以刷新所有产品的函数,以便将值存储到数据库中。
饮歌长啸
阿波罗的战车