Perfecto.
Ahora vamos a convertir los botones en un sistema industrial real:
✅ sin recargar página
✅ actualización automática MySQL
✅ AJAX
✅ móvil/tablet
✅ rápido para trabajadores
✅ preparado para QR
LO QUE VAMOS A HACER
Cuando el trabajador pulse:
- STARK
- NORMAL
- SCHWACH
- VARROA
el sistema:
- actualizará MySQL
- guardará fecha control
- actualizará el estado
- mostrará confirmación
- sin reload
NECESITAS 3 ARCHIVOS
| Archivo | Función |
|---|---|
| industrie-imkerei-system.php | backend AJAX |
| assets/style.css | estilos |
| assets/app.js | JavaScript AJAX |
PASO 1 — CREAR app.js
Crear archivo:
wp-content/plugins/industrie-imkerei-system/assets/app.js
PEGAR ESTE CÓDIGO
document.addEventListener('DOMContentLoaded', function () {
const buttons =
document.querySelectorAll('.status-button');
buttons.forEach(function(button) {
button.addEventListener('click', function() {
const volkId =
this.dataset.volk;
const status =
this.dataset.status;
const card =
this.closest('.volk-detail-card');
fetch(imkerei_ajax.ajax_url, {
method: 'POST',
headers: {
'Content-Type':
'application/x-www-form-urlencoded'
},
body:
'action=update_volk_status'
+ '&volk_id=' + volkId
+ '&status=' + status
})
.then(response => response.json())
.then(data => {
if (data.success) {
card.querySelector(
'.current-status'
).innerHTML =
data.new_status;
alert(
'Status aktualisiert: '
+ data.new_status
);
}
});
});
});
});
PASO 2 — AÑADIR JS EN PHP
Dentro de:
public function load_assets()
REEMPLAZAR TODO por esto:
public function load_assets() {
/*
CSS
*/
wp_enqueue_style(
'imkerei-style',
plugin_dir_url(__FILE__) . 'assets/style.css'
);
/*
JS
*/
wp_enqueue_script(
'imkerei-app',
plugin_dir_url(__FILE__) . 'assets/app.js',
array(),
'1.0',
true
);
/*
AJAX URL
*/
wp_localize_script(
'imkerei-app',
'imkerei_ajax',
array(
'ajax_url' => admin_url('admin-ajax.php')
)
);
}
PASO 3 — REGISTRAR AJAX
Dentro de:
__construct()
AÑADIR:
add_action(
'wp_ajax_update_volk_status',
array($this, 'update_volk_status')
);
add_action(
'wp_ajax_nopriv_update_volk_status',
array($this, 'update_volk_status')
);
PASO 4 — CREAR FUNCIÓN AJAX
Debajo de:
volk_detail_shortcode()
AÑADIR ESTO COMPLETO:
public function update_volk_status() {
global $wpdb;
$table =
$wpdb->prefix . 'bienenvoelker';
$volk_id =
sanitize_text_field(
$_POST['volk_id']
);
$status =
sanitize_text_field(
$_POST['status']
);
$wpdb->update(
$table,
array(
'status' => $status,
'letzte_kontrolle' =>
current_time('mysql')
),
array(
'volk_id' => $volk_id
)
);
wp_send_json(
array(
'success' => true,
'new_status' => $status
)
);
}
PASO 5 — ACTUALIZAR BOTONES
Dentro de:
volk_detail_shortcode()
REEMPLAZAR los botones antiguos por estos:
echo '<div class="quick-buttons">';
echo '<button
class="status-button btn-green"
data-volk="' . esc_attr($volk->volk_id) . '"
data-status="STARK">
STARK
</button>';
echo '<button
class="status-button btn-blue"
data-volk="' . esc_attr($volk->volk_id) . '"
data-status="NORMAL">
NORMAL
</button>';
echo '<button
class="status-button btn-orange"
data-volk="' . esc_attr($volk->volk_id) . '"
data-status="SCHWACH">
SCHWACH
</button>';
echo '<button
class="status-button btn-red"
data-volk="' . esc_attr($volk->volk_id) . '"
data-status="VARROA">
VARROA
</button>';
echo '</div>';
PASO 6 — MOSTRAR STATUS ACTUAL
REEMPLAZAR:
echo '<p><strong>Status:</strong> '
. esc_html($volk->status)
. '</p>';
por:
echo '<p><strong>Status:</strong>
<span class="current-status">'
. esc_html($volk->status) .
'</span>
</p>';
PASO 7 — SUBIR FTP
Subir:
- PHP
- app.js
- style.css
PASO 8 — PROBAR
Abrir:
[volk_detail id="V001"]
Pulsar:
- STARK
- NORMAL
- SCHWACH
- VARROA
RESULTADO
Ahora:
✅ actualiza MySQL
✅ guarda control
✅ cambia status
✅ sin recargar página
✅ ultra rápido para móvil
✅ listo para QR
SIGUIENTE FASE
Ahora viene lo potente:
FASE 7 — QR SYSTEM REAL
Cada colmena tendrá:
- QR único
- abrir colmena
- actualizar status
- historial
- GPS
- tiempo de control
directamente desde smartphone/tablet.
reescribeme el codigo sin errores listo para copiar y pegar: <?php /* Plugin Name: Industrie Imkerei System Plugin URI: https://example.com Description: Managementsystem für 500 Bienenvölker Version: 1.0 Author: OpenAI */ if (!defined(‚ABSPATH‘)) { exit; } class IndustrieImkereiSystem { /* ———————————– CONSTRUCTOR ———————————– */ public function __construct() { add_action( ‚wp_ajax_update_volk_status‘, array($this, ‚update_volk_status‘) ); add_action( ‚wp_ajax_nopriv_update_volk_status‘, array($this, ‚update_volk_status‘) ); /* ADMIN MENU */ add_action( ‚admin_menu‘, array($this, ‚admin_menu‘) ); /* LOAD CSS */ add_action( ‚wp_enqueue_scripts‘, array($this, ‚load_assets‘) ); /* SHORTCODES */ $this->register_shortcodes(); } /* ———————————– LOAD CSS ———————————– */ public function load_assets() { /* CSS */ wp_enqueue_style( ‚imkerei-style‘, plugin_dir_url(__FILE__) . ‚assets/style.css‘ ); /* JS */ wp_enqueue_script( ‚imkerei-app‘, plugin_dir_url(__FILE__) . ‚assets/app.js‘, array(), ‚1.0‘, true ); /* AJAX URL */ wp_localize_script( ‚imkerei-app‘, ‚imkerei_ajax‘, array( ‚ajax_url‘ => admin_url(‚admin-ajax.php‘) ) ); { wp_enqueue_style( ‚imkerei-style‘, plugin_dir_url(__FILE__) . ‚assets/style.css‘ ); } /* ———————————– SHORTCODES ———————————– */ public function register_shortcodes() { add_shortcode( ‚imkerei_dashboard‘, array($this, ‚frontend_dashboard‘) ); add_shortcode( ‚volk_detail‘, array($this, ‚volk_detail_shortcode‘) ); } public function update_volk_status() { global $wpdb; $table = $wpdb->prefix . ‚bienenvoelker‘; $volk_id = sanitize_text_field( $_POST[‚volk_id‘] ); $status = sanitize_text_field( $_POST[’status‘] ); $wpdb->update( $table, array( ’status‘ => $status, ‚letzte_kontrolle‘ => current_time(‚mysql‘) ), array( ‚volk_id‘ => $volk_id ) ); wp_send_json( array( ’success‘ => true, ’new_status‘ => $status ) ); } /* ———————————– CREAR TABLAS MYSQL ———————————– */ public static function install_tables() { global $wpdb; $charset_collate = $wpdb->get_charset_collate(); require_once( ABSPATH . ‚wp-admin/includes/upgrade.php‘ ); /* TABLA BIENENVÖLKER */ $table_bienen = $wpdb->prefix . ‚bienenvoelker‘; $sql1 = „CREATE TABLE $table_bienen ( id BIGINT(20) NOT NULL AUTO_INCREMENT, volk_id VARCHAR(50) NOT NULL, standort VARCHAR(100), status VARCHAR(50), honig_kg FLOAT DEFAULT 0, varroa FLOAT DEFAULT 0, letzte_kontrolle DATETIME, PRIMARY KEY (id) ) $charset_collate;“; dbDelta($sql1); /* TABLA KONTROLLEN */ $table_kontrollen = $wpdb->prefix . ‚kontrollen‘; $sql2 = „CREATE TABLE $table_kontrollen ( id BIGINT(20) NOT NULL AUTO_INCREMENT, volk_id VARCHAR(50), datum DATETIME, beobachtung TEXT, aktion TEXT, mitarbeiter VARCHAR(100), PRIMARY KEY (id) ) $charset_collate;“; dbDelta($sql2); /* TABLA RANKING */ $table_ranking = $wpdb->prefix . ‚ranking‘; $sql3 = „CREATE TABLE $table_ranking ( id BIGINT(20) NOT NULL AUTO_INCREMENT, volk_id VARCHAR(50), punktzahl FLOAT DEFAULT 0, position_nr INT DEFAULT 0, PRIMARY KEY (id) ) $charset_collate;“; dbDelta($sql3); /* INSERTAR DATOS DE PRUEBA */ $check = $wpdb->get_var( „SELECT COUNT(*) FROM $table_bienen“ ); if ($check == 0) { $wpdb->insert( $table_bienen, array( ‚volk_id‘ => ‚V001′, ’standort‘ => ‚Standort Nord‘, ’status‘ => ‚STARK‘, ‚honig_kg‘ => 32.5, ‚varroa‘ => 1.2, ‚letzte_kontrolle‘ => current_time(‚mysql‘) ) ); $wpdb->insert( $table_bienen, array( ‚volk_id‘ => ‚V002′, ’standort‘ => ‚Standort Süd‘, ’status‘ => ‚NORMAL‘, ‚honig_kg‘ => 24.0, ‚varroa‘ => 2.4, ‚letzte_kontrolle‘ => current_time(‚mysql‘) ) ); $wpdb->insert( $table_bienen, array( ‚volk_id‘ => ‚V003′, ’standort‘ => ‚Standort West‘, ’status‘ => ‚SCHWACH‘, ‚honig_kg‘ => 10.5, ‚varroa‘ => 5.8, ‚letzte_kontrolle‘ => current_time(‚mysql‘) ) ); } } /* ———————————– ADMIN MENU ———————————– */ public function admin_menu() { add_menu_page( ‚Imkerei System‘, ‚Imkerei‘, ‚manage_options‘, ‚imkerei-dashboard‘, array($this, ‚dashboard_page‘), ‚dashicons-admin-site‘, 6 ); } /* ———————————– DASHBOARD ADMIN ———————————– */ public function dashboard_page() { global $wpdb; $table = $wpdb->prefix . ‚bienenvoelker‘; $count = $wpdb->get_var( „SELECT COUNT(*) FROM $table“ ); $produktion = $wpdb->get_var( „SELECT SUM(honig_kg) FROM $table“ ); $varroa = $wpdb->get_var( „SELECT AVG(varroa) FROM $table“ ); echo ‚<div class=“wrap“>‘; echo ‚<h1>Industrie Imkerei Dashboard</h1>‘; echo ‚<hr>‘; echo ‚<h2>Gesamtvölker: ‚ . intval($count) . ‚</h2>‘; echo ‚<h2>Produktion KG: ‚ . floatval($produktion) . ‚</h2>‘; echo ‚<h2>Varroa Durchschnitt: ‚ . round($varroa, 2) . ‚%</h2>‘; echo ‚<hr>‘; echo ‚<p>System läuft korrekt.</p>‘; echo ‚</div>‘; } /* ———————————– FRONTEND DASHBOARD ———————————– */ public function frontend_dashboard() { global $wpdb; $table = $wpdb->prefix . ‚bienenvoelker‘; $results = $wpdb->get_results( „SELECT * FROM $table“ ); ob_start(); echo ‚<div class=“imkerei-grid“>‘; foreach ($results as $row) { echo ‚<div class=“imkerei-card“>‘; echo ‚<h2>‘ . esc_html($row->volk_id) . ‚</h2>‘; echo ‚<p><strong>Standort:</strong> ‚ . esc_html($row->standort) . ‚</p>‘; echo ‚<p><strong>Status:</strong> <span class=“current-status“>‘ . esc_html($volk->status) . ‚</span> </p>‘; echo ‚<p><strong>Honig:</strong> ‚ . esc_html($row->honig_kg) . ‚ kg</p>‘; echo ‚<p><strong>Varroa:</strong> ‚ . esc_html($row->varroa) . ‚%</p>‘; echo ‚</div>‘; } echo ‚</div>‘; return ob_get_clean(); } public function volk_detail_shortcode($atts) { global $wpdb; $atts = shortcode_atts( array( ‚id‘ => “ ), $atts ); $table = $wpdb->prefix . ‚bienenvoelker‘; $volk = $wpdb->get_row( $wpdb->prepare( „SELECT * FROM $table WHERE volk_id = %s“, $atts[‚id‘] ) ); if (!$volk) { return ‚<p>Volk nicht gefunden.</p>‘; } ob_start(); echo ‚<div class=“volk-detail-card“>‘; echo ‚<h1>‘ . esc_html($volk->volk_id) . ‚</h1>‘; echo ‚<p><strong>Standort:</strong> ‚ . esc_html($volk->standort) . ‚</p>‘; echo ‚<p><strong>Status:</strong> ‚ . esc_html($volk->status) . ‚</p>‘; echo ‚<p><strong>Honig:</strong> ‚ . esc_html($volk->honig_kg) . ‚ kg</p>‘; echo ‚<p><strong>Varroa:</strong> ‚ . esc_html($volk->varroa) . ‚%</p>‘; /* BOTONES RÁPIDOS */ echo ‚<div class=“quick-buttons“>‘; echo ‚<button class=“status-button btn-green“ data-volk=“‚ . esc_attr($volk->volk_id) . ‚“ data-status=“STARK“> STARK </button>‘; echo ‚<button class=“status-button btn-blue“ data-volk=“‚ . esc_attr($volk->volk_id) . ‚“ data-status=“NORMAL“> NORMAL </button>‘; echo ‚<button class=“status-button btn-orange“ data-volk=“‚ . esc_attr($volk->volk_id) . ‚“ data-status=“SCHWACH“> SCHWACH </button>‘; echo ‚<button class=“status-button btn-red“ data-volk=“‚ . esc_attr($volk->volk_id) . ‚“ data-status=“VARROA“> VARROA </button>‘; echo ‚</div>‘; return ob_get_clean(); } } /* ———————————– PLUGIN AKTIVIERUNG ———————————– */ register_activation_hook( __FILE__, array( ‚IndustrieImkereiSystem‘, ‚install_tables‘ ) ); /* ———————————– PLUGIN START ———————————– */ new IndustrieImkereiSystem();
<?php
/*
Plugin Name: Industrie Imkerei System
Plugin URI: https://example.com
Description: Managementsystem für 500 Bienenvölker
Version: 1.0
Author: OpenAI
*/
if (!defined('ABSPATH')) {
exit;
}
class IndustrieImkereiSystem {
/*
-----------------------------------
CONSTRUCTOR
-----------------------------------
*/
public function __construct() {
/*
ADMIN MENU
*/
add_action(
'admin_menu',
array($this, 'admin_menu')
);
/*
LOAD ASSETS
*/
add_action(
'wp_enqueue_scripts',
array($this, 'load_assets')
);
/*
AJAX
*/
add_action(
'wp_ajax_update_volk_status',
array($this, 'update_volk_status')
);
add_action(
'wp_ajax_nopriv_update_volk_status',
array($this, 'update_volk_status')
);
/*
SHORTCODES
*/
$this->register_shortcodes();
}
/*
-----------------------------------
LOAD CSS + JS
-----------------------------------
*/
public function load_assets() {
/*
CSS
*/
wp_enqueue_style(
'imkerei-style',
plugin_dir_url(__FILE__) . 'assets/style.css'
);
/*
JS
*/
wp_enqueue_script(
'imkerei-app',
plugin_dir_url(__FILE__) . 'assets/app.js',
array(),
'1.0',
true
);
/*
AJAX URL
*/
wp_localize_script(
'imkerei-app',
'imkerei_ajax',
array(
'ajax_url' => admin_url('admin-ajax.php')
)
);
}
/*
-----------------------------------
SHORTCODES
-----------------------------------
*/
public function register_shortcodes() {
add_shortcode(
'imkerei_dashboard',
array($this, 'frontend_dashboard')
);
add_shortcode(
'volk_detail',
array($this, 'volk_detail_shortcode')
);
}
/*
-----------------------------------
AJAX UPDATE STATUS
-----------------------------------
*/
public function update_volk_status() {
global $wpdb;
$table =
$wpdb->prefix . 'bienenvoelker';
$volk_id =
sanitize_text_field(
$_POST['volk_id']
);
$status =
sanitize_text_field(
$_POST['status']
);
$wpdb->update(
$table,
array(
'status' => $status,
'letzte_kontrolle' =>
current_time('mysql')
),
array(
'volk_id' => $volk_id
)
);
wp_send_json(
array(
'success' => true,
'new_status' => $status
)
);
}
/*
-----------------------------------
CREAR TABLAS MYSQL
-----------------------------------
*/
public static function install_tables() {
global $wpdb;
$charset_collate =
$wpdb->get_charset_collate();
require_once(
ABSPATH .
'wp-admin/includes/upgrade.php'
);
/*
TABLA BIENENVÖLKER
*/
$table_bienen =
$wpdb->prefix . 'bienenvoelker';
$sql1 = "CREATE TABLE $table_bienen (
id BIGINT(20) NOT NULL AUTO_INCREMENT,
volk_id VARCHAR(50) NOT NULL,
standort VARCHAR(100),
status VARCHAR(50),
honig_kg FLOAT DEFAULT 0,
varroa FLOAT DEFAULT 0,
letzte_kontrolle DATETIME,
PRIMARY KEY (id)
) $charset_collate;";
dbDelta($sql1);
/*
TABLA KONTROLLEN
*/
$table_kontrollen =
$wpdb->prefix . 'kontrollen';
$sql2 = "CREATE TABLE $table_kontrollen (
id BIGINT(20) NOT NULL AUTO_INCREMENT,
volk_id VARCHAR(50),
datum DATETIME,
beobachtung TEXT,
aktion TEXT,
mitarbeiter VARCHAR(100),
PRIMARY KEY (id)
) $charset_collate;";
dbDelta($sql2);
/*
TABLA RANKING
*/
$table_ranking =
$wpdb->prefix . 'ranking';
$sql3 = "CREATE TABLE $table_ranking (
id BIGINT(20) NOT NULL AUTO_INCREMENT,
volk_id VARCHAR(50),
punktzahl FLOAT DEFAULT 0,
position_nr INT DEFAULT 0,
PRIMARY KEY (id)
) $charset_collate;";
dbDelta($sql3);
/*
INSERTAR DATOS DE PRUEBA
*/
$check = $wpdb->get_var(
"SELECT COUNT(*) FROM $table_bienen"
);
if ($check == 0) {
$wpdb->insert(
$table_bienen,
array(
'volk_id' => 'V001',
'standort' => 'Standort Nord',
'status' => 'STARK',
'honig_kg' => 32.5,
'varroa' => 1.2,
'letzte_kontrolle' => current_time('mysql')
)
);
$wpdb->insert(
$table_bienen,
array(
'volk_id' => 'V002',
'standort' => 'Standort Süd',
'status' => 'NORMAL',
'honig_kg' => 24.0,
'varroa' => 2.4,
'letzte_kontrolle' => current_time('mysql')
)
);
$wpdb->insert(
$table_bienen,
array(
'volk_id' => 'V003',
'standort' => 'Standort West',
'status' => 'SCHWACH',
'honig_kg' => 10.5,
'varroa' => 5.8,
'letzte_kontrolle' => current_time('mysql')
)
);
}
}
/*
-----------------------------------
ADMIN MENU
-----------------------------------
*/
public function admin_menu() {
add_menu_page(
'Imkerei System',
'Imkerei',
'manage_options',
'imkerei-dashboard',
array($this, 'dashboard_page'),
'dashicons-admin-site',
6
);
}
/*
-----------------------------------
DASHBOARD ADMIN
-----------------------------------
*/
public function dashboard_page() {
global $wpdb;
$table =
$wpdb->prefix . 'bienenvoelker';
$count = $wpdb->get_var(
"SELECT COUNT(*) FROM $table"
);
$produktion = $wpdb->get_var(
"SELECT SUM(honig_kg) FROM $table"
);
$varroa = $wpdb->get_var(
"SELECT AVG(varroa) FROM $table"
);
echo '<div class="wrap">';
echo '<h1>Industrie Imkerei Dashboard</h1>';
echo '<hr>';
echo '<h2>Gesamtvölker: '
. intval($count)
. '</h2>';
echo '<h2>Produktion KG: '
. floatval($produktion)
. '</h2>';
echo '<h2>Varroa Durchschnitt: '
. round($varroa, 2)
. '%</h2>';
echo '<hr>';
echo '<p>System läuft korrekt.</p>';
echo '</div>';
}
/*
-----------------------------------
FRONTEND DASHBOARD
-----------------------------------
*/
public function frontend_dashboard() {
global $wpdb;
$table =
$wpdb->prefix . 'bienenvoelker';
$results = $wpdb->get_results(
"SELECT * FROM $table"
);
ob_start();
echo '<div class="imkerei-grid">';
foreach ($results as $row) {
echo '<div class="imkerei-card">';
echo '<h2>'
. esc_html($row->volk_id)
. '</h2>';
echo '<p><strong>Standort:</strong> '
. esc_html($row->standort)
. '</p>';
echo '<p><strong>Status:</strong>
<span class="current-status">'
. esc_html($row->status)
. '</span>
</p>';
echo '<p><strong>Honig:</strong> '
. esc_html($row->honig_kg)
. ' kg</p>';
echo '<p><strong>Varroa:</strong> '
. esc_html($row->varroa)
. '%</p>';
echo '</div>';
}
echo '</div>';
return ob_get_clean();
}
/*
-----------------------------------
VOLK DETAIL
-----------------------------------
*/
public function volk_detail_shortcode($atts) {
global $wpdb;
$atts = shortcode_atts(
array(
'id' => ''
),
$atts
);
$table =
$wpdb->prefix . 'bienenvoelker';
$volk = $wpdb->get_row(
$wpdb->prepare(
"SELECT * FROM $table
WHERE volk_id = %s",
$atts['id']
)
);
if (!$volk) {
return '<p>Volk nicht gefunden.</p>';
}
ob_start();
echo '<div class="volk-detail-card">';
echo '<h1>'
. esc_html($volk->volk_id)
. '</h1>';
echo '<p><strong>Standort:</strong> '
. esc_html($volk->standort)
. '</p>';
echo '<p><strong>Status:</strong>
<span class="current-status">'
. esc_html($volk->status)
. '</span>
</p>';
echo '<p><strong>Honig:</strong> '
. esc_html($volk->honig_kg)
. ' kg</p>';
echo '<p><strong>Varroa:</strong> '
. esc_html($volk->varroa)
. '%</p>';
/*
BOTONES
*/
echo '<div class="quick-buttons">';
echo '<button
class="status-button btn-green"
data-volk="' . esc_attr($volk->volk_id) . '"
data-status="STARK">
STARK
</button>';
echo '<button
class="status-button btn-blue"
data-volk="' . esc_attr($volk->volk_id) . '"
data-status="NORMAL">
NORMAL
</button>';
echo '<button
class="status-button btn-orange"
data-volk="' . esc_attr($volk->volk_id) . '"
data-status="SCHWACH">
SCHWACH
</button>';
echo '<button
class="status-button btn-red"
data-volk="' . esc_attr($volk->volk_id) . '"
data-status="VARROA">
VARROA
</button>';
echo '</div>';
echo '</div>';
return ob_get_clean();
}
}
/*
-----------------------------------
PLUGIN AKTIVIERUNG
-----------------------------------
*/
register_activation_hook(
__FILE__,
array(
'IndustrieImkereiSystem',
'install_tables'
)
);
/*
-----------------------------------
PLUGIN START
-----------------------------------
*/
new IndustrieImkereiSystem();
aqui hay un error en la linea 35: // JavaScript Document document.addEventListener(‚DOMContentLoaded‘, function () { const buttons = document.querySelectorAll(‚.status-button‘); buttons.forEach(function(button) { button.addEventListener(‚click‘, function() { const volkId = this.dataset.volk; const status = this.dataset.status; const card = this.closest(‚.volk-detail-card‘); fetch(imkerei_ajax.ajax_url, { method: ‚POST‘, headers: { ‚Content-Type‘: ‚application/x-www-form-urlencoded‘ }, body: ‚action=update_volk_status‘ + ‚&volk_id=‘ + volkId + ‚&status=‘ + status }) .then(response => response.json()) .then(data => { if (data.success) { card.querySelector( ‚.current-status‘ ).innerHTML = data.new_status; alert( ‚Status aktualisiert: ‚ + data.new_status ); } }); }); }); });
El error en la línea 35 ocurre porque tu hosting probablemente usa un navegador/entorno viejo que no soporta:
response => response.json()
o:
const
o:
this.closest()
Te doy una versión compatible con navegadores antiguos y WordPress shared hosting.
REEMPLAZA COMPLETAMENTE assets/app.js por esto:
// JavaScript Document
document.addEventListener('DOMContentLoaded', function () {
var buttons =
document.querySelectorAll('.status-button');
for (var i = 0; i < buttons.length; i++) {
buttons[i].addEventListener('click', function () {
var volkId =
this.getAttribute('data-volk');
var status =
this.getAttribute('data-status');
var currentStatus =
document.querySelector('.current-status');
var xhr = new XMLHttpRequest();
xhr.open(
'POST',
imkerei_ajax.ajax_url,
true
);
xhr.setRequestHeader(
'Content-Type',
'application/x-www-form-urlencoded'
);
xhr.onreadystatechange = function () {
if (
xhr.readyState === 4 &&
xhr.status === 200
) {
var response =
JSON.parse(xhr.responseText);
if (response.success) {
currentStatus.innerHTML =
response.new_status;
alert(
'Status aktualisiert: '
+ response.new_status
);
}
}
};
xhr.send(
'action=update_volk_status'
+ '&volk_id=' + volkId
+ '&status=' + status
);
});
}
});
Después:
1.
Guardar
2.
Subir FTP:
wp-content/plugins/industrie-imkerei-system/assets/app.js
3.
Vaciar caché navegador
4.
Recargar página
Ahora los botones:
- STARK
- NORMAL
- SCHWACH
- VARROA
actualizarán MySQL correctamente sin errores JavaScript.