// 1. Добавление новой колонки для количества товаров на складе перед столбцом "В наличии"
add_filter('manage_edit-product_columns', 'custom_product_columns');
function custom_product_columns($columns) {
// Проверяем роль пользователя
if (!current_user_can('admin_shop') && !current_user_can('administrator')) {
return $columns; // Возвращаем исходные колонки, если роль не соответствует
}
// Создаем новый массив с колонками
$reordered_columns = array();
// Проходимся по всем существующим колонкам
foreach ($columns as $key => $value) {
// Перед добавлением колонки 'is_in_stock' (В наличии) добавляем нашу новую колонку
if ($key == 'is_in_stock') {
$reordered_columns['stock_quantity'] = __('Количество на складе', 'woocommerce');
}
$reordered_columns[$key] = $value;
}
return $reordered_columns;
}
// 2. Заполнение колонки данными
add_action('manage_product_posts_custom_column', 'custom_product_column_content', 10, 2);
function custom_product_column_content($column, $post_id) {
// Проверяем роль пользователя
if (!current_user_can('admin_shop') && !current_user_can('administrator')) {
return; // Прекращаем выполнение, если роль не соответствует
}
if ($column === 'stock_quantity') {
$stock = get_post_meta($post_id, '_stock', true);
echo '';
echo '';
echo '';
}
}
// 3. AJAX обработка изменения количества товаров
add_action('wp_ajax_update_stock_quantity', 'update_stock_quantity');
function update_stock_quantity() {
// Проверяем роль пользователя
if (!current_user_can('admin_shop') && !current_user_can('administrator')) {
wp_send_json_error(); // Прекращаем выполнение, если роль не соответствует
return;
}
if (isset($_POST['product_id']) && isset($_POST['quantity'])) {
$product_id = intval($_POST['product_id']);
$quantity = intval($_POST['quantity']);
update_post_meta($product_id, '_stock', $quantity);
wp_send_json_success();
} else {
wp_send_json_error();
}
}
// 4. Скрипт для обработки изменения количества товаров в колонке
add_action('admin_footer', 'stock_quantity_editable_script');
function stock_quantity_editable_script() {
// Проверяем роль пользователя
if (!current_user_can('admin_shop') && !current_user_can('administrator')) {
return; // Прекращаем выполнение, если роль не соответствует
}
global $pagenow;
if ($pagenow !== 'edit.php' || get_post_type() !== 'product') {
return;
}
?>
Добавить выбор количества в список товаров
with
no comment