Решил первую проблему путем добавления одной функции и редактирования написанной. Вот код, мб кому то пригодится.
function MTWC_add_item_data($cart_item_data, $product_id, $variation_id)
{
if( isset($_REQUEST['mono_check'])) {
$cart_item_data['mono_check'] = $_REQUEST['mono_check'];
if (isset($_REQUEST['mono_symbols'])) {
$cart_item_data['mono_symbols'] = $_REQUEST['mono_symbols'];
}
if (isset($_REQUEST['mono_type'])) {
$cart_item_data['mono_type'] = $_REQUEST['mono_type'];
}
//Запоминаем новую цену товара при отправке в корзину
$product = wc_get_product($product_id);
$price = $product->get_price();
$cart_item_data['warranty_price'] = $price + 700;
}
return $cart_item_data;
}
add_filter('woocommerce_get_item_data', 'MTWC_add_item_meta', 10, 2);
//Меняем цену товара перед расчетом цены
function before_calculate_totals( $cart_obj ) {
foreach( $cart_obj->get_cart() as $key=>$value ) {
if( isset( $value['warranty_price'] ) ) {
$price = $value['warranty_price'];
$value['data']->set_price( ( $price ) );
}
}
}
add_action( 'woocommerce_before_calculate_totals', 'before_calculate_totals', 10, 1 );