function
// ПОЛЕ ЦЕНЫ СРАЗУ РЕДАЧИТСЯ
// ПОЛЕ ЦЕНЫ СРАЗУ РЕДАЧИТСЯ
// ПОЛЕ ЦЕНЫ СРАЗУ РЕДАЧИТСЯ
// Добавляем кастомную колонку для цены в список товаров
add_filter('manage_edit-products_columns', 'add_price_column', 10, 1);
function add_price_column($columns) {
$new_columns = array();
foreach ($columns as $key => $value) {
$new_columns[$key] = $value;
if ($key == 'title') { // Вставляем новую колонку после заголовка
$new_columns['product_price'] = 'Цена';
}
}
return $new_columns;
}
// Заполняем кастомную колонку значениями
add_action('manage_products_posts_custom_column', 'fill_price_column', 10, 2);
function fill_price_column($column, $post_id) {
if ($column === 'product_price') {
$price = get_post_meta($post_id, 'цена', true);
echo '<input type="number" step="0.01" min="0" class="product_price_input" data-id="' . $post_id . '" value="' . esc_attr($price) . '">';
}
}
// Стили для инпута цены
add_action('admin_enqueue_scripts', 'price_column_styles');
function price_column_styles() {
echo '
<style>
.product_price_input {
width: 80px;
}
</style>';
}
// Сохранение изменений цены с помощью AJAX
add_action('wp_ajax_save_product_price', 'save_product_price');
function save_product_price() {
if (!current_user_can('edit_posts')) { // Изменено на 'edit_posts'
wp_die('У вас нет доступа к этой странице.');
}
check_ajax_referer('price_column_nonce', '_ajax_nonce');
$post_id = intval($_POST['post_id']);
$price = floatval($_POST['price']);
// Обновление метаполя "цена"
update_post_meta($post_id, 'цена', $price);
echo $price;
wp_die();
}
// Подключение скрипта для обработки AJAX
add_action('admin_enqueue_scripts', 'price_column_scripts');
function price_column_scripts() {
wp_enqueue_script('price-column-ajax', get_template_directory_uri() . '/js/price-column-ajax.js', array('jquery'), null, true);
wp_localize_script('price-column-ajax', 'priceColumnAjax', array(
'ajax_url' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('price_column_nonce')
));
}
// ПОЛЕ ЦЕНЫ СРАЗУ РЕДАЧИТСЯ
// ПОЛЕ ЦЕНЫ СРАЗУ РЕДАЧИТСЯ
// ПОЛЕ ЦЕНЫ СРАЗУ РЕДАЧИТСЯ
price-column-ajax.js
jQuery(document).ready(function($) {
$('.product_price_input').on('change', function() {
var inputElement = $(this);
var post_id = inputElement.data('id');
var price = inputElement.val();
$.ajax({
type: 'POST',
url: priceColumnAjax.ajax_url,
data: {
action: 'save_product_price',
post_id: post_id,
price: price,
_ajax_nonce: priceColumnAjax.nonce
},
success: function(response) {
inputElement.addClass('green-active');
},
error: function() {
console.log('Ошибка при обновлении цены');
}
});
});
});
css в function
.green-active {
outline: 2px solid #97d949;
}