Как задать отображение цены товаров по формуле в woocommerce?

В WooCommerce цена товара определяется с помощью метаполя товара. Вам нужно создать свое метаполе, в котором будет храниться значение цены, рассчитанное по формуле.

Сначала необходимо добавить метаполе для товара. Для этого вы можете использовать функцию add_meta_box() в функции add_meta_boxes вашей темы или плагина.

function add_custom_metabox() {
    add_meta_box(
        'custom_price_metabox',
        'Настройка цены товара',
        'render_custom_metabox',
        'product',
        'normal',
        'default'
    );
}
add_action('add_meta_boxes', 'add_custom_metabox');

Этот код добавит новое метаполе на страницу редактирования товара в административной панели WordPress.

Затем вам нужно создать функцию render_custom_metabox(), которая будет отображать поле ввода для формулы и сохранять значение в БД.

function render_custom_metabox($post) {
    $custom_price = get_post_meta($post->ID, 'custom_price', true);
    ?>
    <label for="custom_price_field">Формула для расчета цены:</label>
    <input type="text" id="custom_price_field" name="custom_price_field" value="<?php echo esc_attr($custom_price); ?>">
    <?php
}

function save_custom_metabox($post_id) {
    if (isset($_POST['custom_price_field'])) {
        $custom_price = sanitize_text_field($_POST['custom_price_field']);
        update_post_meta($post_id, 'custom_price', $custom_price);
    }
}
add_action('save_post', 'save_custom_metabox');

Теперь вы можете получить значение метаполя custom_price с помощью функции get_post_meta() и использовать его для расчета цены товара в соответствии с вашей формулой.

function calculate_custom_price($price, $product) {
    $custom_price = get_post_meta($product->get_id(), 'custom_price', true);
    
    // Здесь вы можете разработать свой алгоритм расчета цены
    // Используйте переменную $custom_price, чтобы получить значение из метаполя

    return $price;
}
add_filter('woocommerce_product_get_price', 'calculate_custom_price', 10, 2);

В этом примере я использовал фильтр woocommerce_product_get_price, чтобы переопределить функцию расчета цены товара. Вы можете расширить эту функцию calculate_custom_price() для выполнения ваших расчетов и возвращения новой цены.

Надеюсь, это поможет вам задать отображение цены товаров по формуле в WooCommerce.