Woocommerce как заменять ссылку кнопки относительно категории выбранного товара?

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

Первым шагом является добавление дополнительного поля категории товара. Для этого вы можете использовать функцию add_action, чтобы добавить новое поле категории товара. Вот пример кода, который можно разместить в файле functions.php вашей активной темы WordPress:

function custom_category_field() {
    ?>
        <div class="form-field">
            <label for="custom_field"><?php _e( 'Custom Field', 'woocommerce' ); ?></label>
            <input type="text" class="short" name="custom_field" id="custom_field" value=""/>
            <p class="description"><?php _e( 'Enter custom field value.', 'woocommerce' ); ?></p>
        </div>
    <?php
}
add_action( 'product_cat_add_form_fields', 'custom_category_field', 10, 2 );
add_action( 'product_cat_edit_form_fields', 'custom_category_field', 10, 2 );

function save_custom_category_field( $term_id, $tt_id ) {
    if ( isset( $_POST['custom_field'] ) ) {
        $custom_field = sanitize_text_field( $_POST['custom_field'] );
        update_term_meta( $term_id, 'custom_field', $custom_field );
    }
}
add_action( 'edited_product_cat', 'save_custom_category_field', 10, 2 );
add_action( 'create_product_cat', 'save_custom_category_field', 10, 2 );

Вышеуказанный код добавит новое поле с именем "Custom Field" в админ-панель WooCommerce для каждой категории товара.

Далее вам нужно изменить ссылку кнопки на странице товара, используя фильтр woocommerce_loop_add_to_cart_link. Этот фильтр позволяет изменить HTML-код кнопки добавления товара в корзину. Вот пример кода, который можно разместить в вашем файле functions.php:

function custom_add_to_cart_button( $button_html, $product ) {
    $category = get_the_terms( $product->get_id(), 'product_cat' ); // получаем категориюи товара
    $category_slug = $category[0]->slug; // получаем slug категории товара
    $custom_field_value = get_term_meta( $category[0]->term_id, 'custom_field', true ); // получаем значение поля "Custom Field" для категории

    // заменяем ссылку кнопки, добавляем значение категории и значения поля "Custom Field"
    $button_html = str_replace( 'href=', 'href="/' . $category_slug . '/' . $custom_field_value . '"', $button_html );

    return $button_html;
}
add_filter( 'woocommerce_loop_add_to_cart_link', 'custom_add_to_cart_button', 10, 2 );

В приведенном выше коде мы получаем значение категории и значения поля "Custom Field" для товара, затем изменяем ссылку кнопки на нужную, используя это значение.

После размещения этого кода, ссылка кнопки будет заменяться относительно категории выбранного товара в WooCommerce. Пожалуйста, обратите внимание, что приведенный код является основным и может потребоваться дополнительная настройка в зависимости от вашей темы.