prefix . 'message_board'; // Tabelle für Nachrichten $charset_collate = $wpdb->get_charset_collate(); $sql = "CREATE TABLE $table_name ( id mediumint(9) NOT NULL AUTO_INCREMENT, message text NOT NULL, user_id bigint(20) NOT NULL, created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL, PRIMARY KEY (id) ) $charset_collate;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } register_activation_hook(WP_MULTI_FILE, 'wp_multi_create_message_board_table'); // Funktion zum Anzeigen der Nachrichten im Adminbereich function wp_multi_add_message_board() { if (!current_user_can('administrator')) { return; } global $wpdb; $table_name = $wpdb->prefix . 'message_board'; $created = false; // Nachricht erstellen (VOR der Ausgabe, damit sie sofort erscheint) if (isset($_POST['submit_message']) && !empty($_POST['new_message'])) { if (!isset($_POST['wp_multi_pinwand_nonce_field']) || !wp_verify_nonce(wp_unslash($_POST['wp_multi_pinwand_nonce_field']), 'wp_multi_pinwand_create_message')) { wp_die(__('Ungültige oder abgelaufene Anfrage.', 'wp-multi')); } $wpdb->insert( $table_name, array( 'message' => sanitize_textarea_field(wp_unslash($_POST['new_message'])), 'user_id' => get_current_user_id(), ) ); $created = true; } $messages = $wpdb->get_results("SELECT * FROM $table_name ORDER BY created_at DESC"); wpmt_admin_page_open( __('Pinwand', 'wp-multi'), __('Interne Nachrichten für das Admin-Team', 'wp-multi') ); if ($created) { wpmt_admin_notice('success', __('Nachricht wurde erfolgreich erstellt.', 'wp-multi')); } wpmt_admin_card_open(__('Neue Nachricht erstellen', 'wp-multi')); ?>

'; foreach ($messages as $message) { $user_info = get_userdata($message->user_id); $author = $user_info ? $user_info->user_login : __('Unbekannt', 'wp-multi'); printf( '
%s

%s

%s

', (int) $message->id, esc_html($author), esc_html(date('d-m-Y H:i', strtotime($message->created_at))), esc_html(wp_trim_words($message->message, 20)) ); } echo ''; } else { wpmt_admin_notice('info', __('Keine Nachrichten vorhanden.', 'wp-multi')); } wpmt_admin_card_close(); wpmt_admin_page_close(); ?> prefix . 'message_board'; $message_id = intval($_POST['message_id']); $message = $wpdb->get_row($wpdb->prepare("SELECT * FROM $table_name WHERE id = %d", $message_id)); if ($message) { // Datum im gewünschten Format (DD-MM-JJJJ HH:MM:SS) $formatted_date = date('d-m-Y H:i:s', strtotime($message->created_at)); echo json_encode([ 'created_at' => $formatted_date, 'message' => nl2br(esc_textarea($message->message)), 'user' => get_userdata($message->user_id)->user_login ]); } } wp_die(); } add_action('wp_ajax_wp_multi_get_message', 'wp_multi_get_message'); // Funktion zum Löschen einer Nachricht function wp_multi_delete_message() { check_ajax_referer('wp_multi_pinwand_nonce', 'nonce'); if (!current_user_can('administrator')) { wp_die(); } if (isset($_POST['message_id'])) { global $wpdb; $table_name = $wpdb->prefix . 'message_board'; $message_id = intval($_POST['message_id']); $wpdb->delete($table_name, array('id' => $message_id), array('%d')); echo 'success'; } wp_die(); } add_action('wp_ajax_wp_multi_delete_message', 'wp_multi_delete_message'); // Funktion zum Deaktivieren der Pinwand bei der Deinstallation function wp_multi_delete_message_board_table() { global $wpdb; $table_name = $wpdb->prefix . 'message_board'; $wpdb->query("DROP TABLE IF EXISTS $table_name"); } register_deactivation_hook(WP_MULTI_FILE, 'wp_multi_delete_message_board_table'); // Funktion, um das Dashboard-Widget zu registrieren function wp_multi_dashboard_widget() { wp_add_dashboard_widget( 'wp_multi_pinwand_widget', // Widget-ID 'Pinwand Übersicht', // Widget-Titel 'wp_multi_dashboard_widget_content' // Callback-Funktion ); } add_action('wp_dashboard_setup', 'wp_multi_dashboard_widget'); // Callback-Funktion, die den Inhalt des Widgets erstellt function wp_multi_dashboard_widget_content() { global $wpdb; $table_name = $wpdb->prefix . 'message_board'; $messages = $wpdb->get_results("SELECT * FROM $table_name ORDER BY created_at DESC LIMIT 5"); // Zeige die neuesten 5 Nachrichten an if ($messages) { echo ''; } else { echo '

Keine neuen Nachrichten.

'; } }