Для доступа к БД с удаленных компьютеров нужно указать IP-адрес или доменное имя компьютера, с которого будет производиться подключение.
Можно создать уникальные пароли для отдельных адресов или единый пароль для всех сразу.
Можно указать в качестве доступа localhost, если вы удаляли его ранее.
// Hook to set stock status and quantity of size 125
add_action('woocommerce_before_single_product', 'update_size_125_stock_status_and_quantity');
function update_size_125_stock_status_and_quantity() {
global $product;
// Check if it's a variable product
if ($product->is_type('variable')) {
$attribute_name = 'pa_razmer'; // Replace with your actual attribute name
$attribute_value_125 = '125';
// Get the product ID
$product_id = $product->get_id();
// Set stock status and quantity of size 125
set_stock_status_and_quantity($product_id, $attribute_name, $attribute_value_125);
}
}
// Function to set stock status and quantity of size 125
function set_stock_status_and_quantity($product_id, $attribute_name, $attribute_value) {
$variations = get_variations_by_attribute($product_id, $attribute_name, $attribute_value);
foreach ($variations as $variation) {
$variation_id = $variation['variation_id'];
update_post_meta($variation_id, '_stock_status', 'instock'); // Set stock status to "in stock"
update_post_meta($variation_id, '_stock', 1); // Set stock quantity to 1 (you can change this to your desired quantity)
}
}
// Function to get variations based on attribute value
function get_variations_by_attribute($product_id, $attribute_name, $attribute_value) {
$variations = array();
$args = array(
'post_type' => 'product_variation',
'post_status' => 'publish',
'posts_per_page' => -1,
'orderby' => 'menu_order',
'order' => 'asc',
'meta_query' => array(
array(
'key' => 'attribute_' . $attribute_name,
'value' => $attribute_value,
'compare' => '=',
),
),
'fields' => 'ids',
);
$variation_ids = get_posts($args);
foreach ($variation_ids as $variation_id) {
$variation = wc_get_product($variation_id);
$variations[] = array(
'variation_id' => $variation_id,
'attributes' => $variation->get_variation_attributes(),
);
}
return $variations;
}
document.addEventListener('DOMContentLoaded', () => {
const size120 = document.querySelector('[data-value="120"]');
const size125 = document.querySelector('[data-value="125"]');
setInterval(() => {
if (size120 && size125) {
if (size120.classList.contains('disabled')) {
size125.style.display = "none";
size125.classList.add('disabled');
}
}
}, 1000)
});
Зачем изначально было делать 120 и 125 разными вариациями, если это одно и тоже?для пользователя это "разные размеры", так требует маркетолог
Нужно сделать (переделать) это одной вариацией.К сожалению не вариант
А если необходимо чтобы пользователь уточнял что ему нужно, то можно добавить кастомные поля для вариантов.