首页 > 解决方案 > 在我的每个产品中创建新元框后,如何将值存储在数据库中?如何使用函数正确更改这些值?

问题描述

我使用以下代码(粘贴在 functions.php 中)在我的每个产品中创建了一个新的元框:

/**
 * ADD A CUSTOM SECURITY FIELD
*/
function cfsf_create_custom_field() {
$args = array(
'id' => 'cron_function_security_field',
'label' => __( 'Cron Function Security Field', 'cfsf' ),
'class' => 'cfsf-security-field',
'desc_tip' => true,
'description' => __( 'Security field when providing automatic updates', 'cfsf' ),
);
woocommerce_wp_text_input( $args );
}
add_action( 'woocommerce_product_options_general_product_data', 'cfsf_create_custom_field' );

1)该字段仅出现在常规选项卡中的简单产品 - 不是可变的 - 有什么想法吗?

2)当我插入任何值 - 数字或短语(123 或“set_attributes”)并单击保存时,该值不会存储 - 它不会再次显示。

您对如何将值正确存储在数据库中有任何想法吗?

我希望在功能中使用以下命令自动更改这些值,然后检查它们 - 使用 update_post_meta 并且“值”始终是函数名称(代码块以便更好地理解):

private function set_custom_price($product) {
    if (!$product->exists()) {
        return false;
    }

    $product_price = $product->get_regular_price();

    if (($product_price > 0) && ($product_price < 401)) {
        $product->set_regular_price(ceil(($product_price + ($product_price*(0.5)))/10) *10-1);
    } elseif (($product_price > 400) && ($product_price < 801)) {
        $product->set_regular_price(ceil(($product_price + 120)/10) *10-1);
    } elseif (($product_price > 800) && ($product_price < 1101)) {
        $product->set_regular_price(ceil(($product_price + 150)/10) *10-1);
    } elseif (($product_price > 1100) && ($product_price < 1601)) {
        $product->set_regular_price(ceil(($product_price + 200)/10) *10-1);
    } elseif (($product_price > 1600) && ($product_price < 2001)) {
        $product->set_regular_price(ceil(($product_price + 220)/10) *10-1);
    } elseif (($product_price > 2000) && ($product_price < 5001)) {
        $product->set_regular_price(ceil(($product_price + ($product_price*(0.15)))/10) *10-1);
    }

    update_post_meta($product,'cron_function_security_field','set_custom_price');
    $product->save();
}

标签: phpwordpresswoocommercemetadatameta

解决方案


推荐阅读