【发布时间】:2020-08-28 18:50:40
【问题描述】:
我使用this tutorial 为我的产品创建了一个自定义字段,但我需要为此字段设置一个默认值。 我已经创建了数百种产品,我还需要更新这些产品。然后我使用这个值来订购产品。
这是整个代码:
// 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;
}
return $args_sort_cw;
}
add_filter( 'woocommerce_get_catalog_ordering_args', 'cw_add_postmeta_ordering_args' );
function cw_add_new_postmeta_orderby( $sortby ) {
$sortby['priority'] = __( 'Recommended', 'woocommerce' );
return $sortby;
}
add_filter( 'woocommerce_default_catalog_orderby_options', 'cw_add_new_postmeta_orderby' );
add_filter( 'woocommerce_catalog_orderby', 'cw_add_new_postmeta_orderby' );
我找不到可行的解决方案,所以我恳请您提供建议。我期望每个现有产品都会设置此值,并且在创建新产品时会显示默认值。那么就应该按照这个值来排序。感谢您的帮助!
根据第一个答案编辑: 数据库中的数据不会更新。在前端,我只能看到我手动更改的产品,而不是使用此功能添加 0 的产品。当我尝试将更改后的值更改回 0 时,它不会更新。实际上我只需要一个函数来刷新所有产品,以便将值存储到数据库中。
【问题讨论】:
-
我回答了,但很好奇为什么需要自定义重量字段?这已经是 Woo 提供的一个领域了?
-
我的意思不是说它更像是体重优先级。变量命名是我的错。
标签: php wordpress woocommerce