Compare commits
9 Commits
Author | SHA1 | Date | |
---|---|---|---|
bc7c87500c | |||
37b41fd014 | |||
5da4627c4c | |||
4cd6849f1f | |||
38a9395c59 | |||
b7ddf09646 | |||
e6bfb50207 | |||
7baa5d8748 | |||
7071d3a062 |
@ -3,7 +3,7 @@
|
|||||||
**Benachrichtigt bei neuen WordPress-Kommentaren per E-Mail und optional über Telegram.**
|
**Benachrichtigt bei neuen WordPress-Kommentaren per E-Mail und optional über Telegram.**
|
||||||
Ideal für Teams und Website-Administratoren, die nichts verpassen möchten.
|
Ideal für Teams und Website-Administratoren, die nichts verpassen möchten.
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||

|

|
||||||
|
|
||||||
@ -46,5 +46,5 @@ Die Plugin-eigene Logik verwendet WordPress’ Kommentar-Hooks, um Administrator
|
|||||||
|
|
||||||
### Dashboard-Widget
|
### Dashboard-Widget
|
||||||
|
|
||||||
Das Plugin zeigt ein Widget im WP-Admin-Dashboard, das auf die neueste Version des Plugins prüft – über die öffentliche Gitea-API:
|
Das Plugin zeigt ein Widget im WP-Admin-Dashboard, das auf die neueste Version des Plugins prüft
|
||||||
|
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
/*
|
/*
|
||||||
* Plugin Name: WP Multi Comment Notifications
|
* Plugin Name: WP Multi Comment Notifications
|
||||||
* Plugin URI: https://git.viper.ipv64.net/M_Viper/wp-multi-comment-notifications
|
* Plugin URI: https://git.viper.ipv64.net/M_Viper/wp-multi-comment-notifications
|
||||||
* Description: Benachrichtigt bei neuen Kommentaren per E-Mail und optional über Telegram. Ideal für Teams, die schnell informiert werden wollen.
|
* Description: Benachrichtigt bei neuen Kommentaren per E-Mail und optional über Telegram & Discord. Ideal für Teams, die schnell informiert werden wollen.
|
||||||
* Version: 1.0
|
* Version: 1.4
|
||||||
* Author: M_Viper
|
* Author: M_Viper
|
||||||
* Author URI: https://m-viper.de
|
* Author URI: https://m-viper.de
|
||||||
* Requires at least: 6.7.2
|
* Requires at least: 6.7.2
|
||||||
@ -12,7 +12,7 @@
|
|||||||
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
* Text Domain: wp-multi-comment-notifications
|
* Text Domain: wp-multi-comment-notifications
|
||||||
* Domain Path: /languages
|
* Domain Path: /languages
|
||||||
* Tags: kommentare, benachrichtigung, e-mail, telegram, kommentarüberwachung, teamkommunikation
|
* Tags: kommentare, benachrichtigung, e-mail, telegram, discord, kommentarüberwachung, teamkommunikation
|
||||||
*
|
*
|
||||||
* Support:
|
* Support:
|
||||||
* - Microsoft Teams: https://teams.live.com/l/community/FEAzokphpZTJ2u6OgI
|
* - Microsoft Teams: https://teams.live.com/l/community/FEAzokphpZTJ2u6OgI
|
||||||
@ -23,125 +23,47 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// Funktion zur Überprüfung des WP Multi Toolkit Plugins
|
||||||
* Dashboard Widget – Update Info für dieses Plugin
|
function wp_multi_comment_notifications_check_dependency() {
|
||||||
*/
|
if (!function_exists('is_plugin_active')) {
|
||||||
function wp_multi_cmn_dashboard_widget() {
|
include_once(ABSPATH . 'wp-admin/includes/plugin.php');
|
||||||
wp_add_dashboard_widget(
|
|
||||||
'wp_multi_cmn_update_widget',
|
|
||||||
__('WP Multi Comment Notifications – Update Info', 'wp-multi-comment-notifications'),
|
|
||||||
'wp_multi_cmn_update_dashboard_widget_content'
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
add_action('wp_dashboard_setup', 'wp_multi_cmn_dashboard_widget');
|
|
||||||
|
|
||||||
// Cron-Intervall „stündlich“ definieren
|
// Prüft, ob WP Multi Toolkit installiert und aktiv ist
|
||||||
add_filter('cron_schedules', function ($schedules) {
|
if (!is_plugin_active('wp-multi-toolkit/wp-multi-toolkit.php')) {
|
||||||
$schedules['hourly'] = array(
|
add_action('admin_notices', 'wp_multi_comment_notifications_dependency_notice');
|
||||||
'interval' => 3600,
|
|
||||||
'display' => __('Stündlich', 'wp-multi-comment-notifications'),
|
|
||||||
);
|
|
||||||
return $schedules;
|
|
||||||
});
|
|
||||||
|
|
||||||
// Cron-Event planen
|
|
||||||
function wp_multi_cmn_schedule_update_check() {
|
|
||||||
if (!wp_next_scheduled('wp_multi_cmn_update_check_event')) {
|
|
||||||
wp_schedule_event(time(), 'hourly', 'wp_multi_cmn_update_check_event');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
add_action('wp', 'wp_multi_cmn_schedule_update_check');
|
|
||||||
|
|
||||||
// Gitea API aufrufen
|
|
||||||
function wp_multi_cmn_fetch_latest_release($show_prereleases = false) {
|
|
||||||
$api_url = 'https://git.viper.ipv64.net/api/v1/repos/M_Viper/wp-multi-comment-notifications/releases';
|
|
||||||
$response = wp_remote_get($api_url, array('timeout' => 10));
|
|
||||||
|
|
||||||
if (is_wp_error($response)) {
|
|
||||||
error_log('WP Multi Comment Notifications – Update Fehler: ' . $response->get_error_message());
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
$body = wp_remote_retrieve_body($response);
|
|
||||||
$data = json_decode($body, true);
|
|
||||||
|
|
||||||
if (!is_array($data)) {
|
|
||||||
error_log('WP Multi Comment Notifications – Ungültige API-Antwort');
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($data as $release) {
|
// Fehlermeldung für Admin-Bereich mit Download-Button
|
||||||
if (!$show_prereleases && isset($release['prerelease']) && $release['prerelease']) {
|
function wp_multi_comment_notifications_dependency_notice() {
|
||||||
continue;
|
?>
|
||||||
}
|
<div class="notice notice-error">
|
||||||
if (!empty($release['tag_name'])) {
|
<p>
|
||||||
return $release;
|
<?php _e('Das Plugin "WP Multi Comment Notifications" benötigt "WP Multi Toolkit", um zu funktionieren. Bitte installieren und aktivieren Sie "WP Multi Toolkit".', 'wp-multi-comment-notifications'); ?>
|
||||||
}
|
<a href="https://git.viper.ipv64.net/M_Viper/wp-multi-toolkit/releases" target="_blank" class="button button-primary" style="margin-left: 10px;">
|
||||||
|
<?php _e('WP Multi Toolkit herunterladen', 'wp-multi-comment-notifications'); ?>
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
// Plugin nur initialisieren, wenn Abhängigkeit erfüllt ist
|
||||||
}
|
if (wp_multi_comment_notifications_check_dependency()) {
|
||||||
|
// Hier würde der restliche Plugin-Code folgen
|
||||||
|
|
||||||
// Cron Callback
|
|
||||||
function wp_multi_cmn_update_check() {
|
|
||||||
if (!function_exists('get_plugin_data')) {
|
|
||||||
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
|
||||||
}
|
|
||||||
|
|
||||||
$plugin_data = get_plugin_data(__FILE__);
|
|
||||||
$installed_version = $plugin_data['Version'];
|
|
||||||
$show_prereleases = get_option('wp_multi_cmn_show_prereleases', false);
|
|
||||||
|
|
||||||
$release = wp_multi_cmn_fetch_latest_release($show_prereleases);
|
|
||||||
|
|
||||||
if ($release) {
|
|
||||||
update_option('wp_multi_cmn_latest_version', $release['tag_name']);
|
|
||||||
update_option('wp_multi_cmn_release_notes', $release['body']);
|
|
||||||
update_option('wp_multi_cmn_is_prerelease', $release['prerelease']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
add_action('wp_multi_cmn_update_check_event', 'wp_multi_cmn_update_check');
|
|
||||||
|
|
||||||
// Widget Callback
|
|
||||||
function wp_multi_cmn_update_dashboard_widget_content() {
|
|
||||||
if (!function_exists('get_plugin_data')) {
|
|
||||||
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
|
||||||
}
|
|
||||||
|
|
||||||
$plugin_data = get_plugin_data(__FILE__);
|
|
||||||
$installed_version = $plugin_data['Version'];
|
|
||||||
$show_prereleases = get_option('wp_multi_cmn_show_prereleases', false);
|
|
||||||
|
|
||||||
$release = wp_multi_cmn_fetch_latest_release($show_prereleases);
|
|
||||||
|
|
||||||
if ($release === false) {
|
|
||||||
echo '<p style="color:red;">Fehler beim Abrufen der Update-Informationen.</p>';
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$latest_version = $release['tag_name'];
|
|
||||||
$release_notes = isset($release['body']) ? $release['body'] : '';
|
|
||||||
$is_prerelease = isset($release['prerelease']) && $release['prerelease'];
|
|
||||||
|
|
||||||
if (version_compare($installed_version, $latest_version, '>=')) {
|
|
||||||
echo '<p style="color:green;">Du verwendest die aktuelle Version: <strong>' . esc_html($installed_version) . '</strong></p>';
|
|
||||||
} else {
|
} else {
|
||||||
echo '<p style="color:red;"><strong>Neue Version verfügbar: ' . esc_html($latest_version) . '</strong></p>';
|
// Optional: Plugin komplett deaktivieren, wenn Abhängigkeit fehlt
|
||||||
echo '<p>Installiert: <strong>' . esc_html($installed_version) . '</strong></p>';
|
add_action('admin_init', function() {
|
||||||
|
deactivate_plugins(plugin_basename(__FILE__));
|
||||||
if ($is_prerelease && $show_prereleases) {
|
});
|
||||||
echo '<p style="color:blue;">Hinweis: Dies ist ein PreRelease.</p>';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($release_notes)) {
|
|
||||||
echo '<p><strong>Release Notes:</strong><br>' . nl2br(esc_html($release_notes)) . '</p>';
|
|
||||||
}
|
|
||||||
|
|
||||||
$download_url = isset($release['assets'][0]['browser_download_url']) ? $release['assets'][0]['browser_download_url'] : '#';
|
|
||||||
echo '<p><a href="' . esc_url($download_url) . '" class="button button-primary">Update herunterladen</a></p>';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
define('WPMCN_PLUGIN_VERSION', '1.2');
|
||||||
|
define('WPMCN_PLUGIN_DIR', plugin_dir_path(__FILE__));
|
||||||
|
|
||||||
// 1. Plugin-Optionen im Admin-Bereich unter dem Menü "Kommentare" hinzufügen
|
// 1. Plugin-Optionen im Admin-Bereich unter dem Menü "Kommentare" hinzufügen
|
||||||
function wp_multi_comment_notifications_menu() {
|
function wp_multi_comment_notifications_menu() {
|
||||||
@ -169,13 +91,21 @@ function wp_multi_comment_notifications_settings_page() {
|
|||||||
<label for="wp_telegram_token">Telegram Bot Token</label>
|
<label for="wp_telegram_token">Telegram Bot Token</label>
|
||||||
<input type="text" name="wp_telegram_token" value="<?php echo esc_attr(get_option('wp_telegram_token')); ?>" class="regular-text" />
|
<input type="text" name="wp_telegram_token" value="<?php echo esc_attr(get_option('wp_telegram_token')); ?>" class="regular-text" />
|
||||||
|
|
||||||
|
<h3>Discord Webhook URL</h3>
|
||||||
|
<label for="wp_discord_webhook_url">Webhook URL</label>
|
||||||
|
<input type="text" name="wp_discord_webhook_url" value="<?php echo esc_attr(get_option('wp_discord_webhook_url')); ?>" class="regular-text" />
|
||||||
|
|
||||||
|
<h3>Nachricht für Discord</h3>
|
||||||
|
<textarea name="wp_discord_message" rows="5" class="large-text"><?php echo esc_textarea(get_option('wp_discord_message')); ?></textarea>
|
||||||
|
<p>Verwende Platzhalter wie <code>{{COMMENT_AUTHOR}}</code>, <code>{{COMMENT_TEXT}}</code>, <code>{{USER_NAME}}</code>, <code>{{POST_TITLE}}</code>, <code>{{SITE_NAME}}</code>, <code>{{POST_URL}}</code>, <code>{{COMMENT_DATE}}</code>, <code>{{COMMENT_URL}}</code> </p>
|
||||||
|
|
||||||
<h3>Nachricht für E-Mail</h3>
|
<h3>Nachricht für E-Mail</h3>
|
||||||
<textarea name="wp_email_message" rows="5" class="large-text"><?php echo esc_textarea(get_option('wp_email_message')); ?></textarea>
|
<textarea name="wp_email_message" rows="5" class="large-text"><?php echo esc_textarea(get_option('wp_email_message')); ?></textarea>
|
||||||
<p>Verwende Platzhalter wie <code>{{COMMENT_AUTHOR}}</code>, <code>{{COMMENT_TEXT}}</code>, <code>{{USER_NAME}}</code> für dynamische Daten.</p>
|
<p>Verwende Platzhalter wie <code>{{COMMENT_AUTHOR}}</code>, <code>{{COMMENT_TEXT}}</code>, <code>{{USER_NAME}}</code>, <code>{{POST_TITLE}}</code>, <code>{{SITE_NAME}}</code>, <code>{{POST_URL}}</code>, <code>{{COMMENT_DATE}}</code>, <code>{{COMMENT_URL}}</code> </p>
|
||||||
|
|
||||||
<h3>Nachricht für Telegram</h3>
|
<h3>Nachricht für Telegram</h3>
|
||||||
<textarea name="wp_telegram_message" rows="5" class="large-text"><?php echo esc_textarea(get_option('wp_telegram_message')); ?></textarea>
|
<textarea name="wp_telegram_message" rows="5" class="large-text"><?php echo esc_textarea(get_option('wp_telegram_message')); ?></textarea>
|
||||||
<p>Verwende Platzhalter wie <code>{{COMMENT_AUTHOR}}</code>, <code>{{COMMENT_TEXT}}</code>, <code>{{USER_NAME}}</code> für dynamische Daten.</p>
|
<p>Verwende Platzhalter wie <code>{{COMMENT_AUTHOR}}</code>, <code>{{COMMENT_TEXT}}</code>, <code>{{USER_NAME}}</code>, <code>{{POST_TITLE}}</code>, <code>{{SITE_NAME}}</code>, <code>{{POST_URL}}</code>, <code>{{COMMENT_DATE}}</code>, <code>{{COMMENT_URL}}</code> </p>
|
||||||
|
|
||||||
<h3>Backend-Button URL</h3>
|
<h3>Backend-Button URL</h3>
|
||||||
<label for="wp_backend_button_url">URL für Backend Button</label>
|
<label for="wp_backend_button_url">URL für Backend Button</label>
|
||||||
@ -198,6 +128,9 @@ function wp_multi_comment_notifications_settings_page() {
|
|||||||
|
|
||||||
<label for="wp_user_<?php echo $i; ?>_telegram_chat_id">Telegram Chat ID</label>
|
<label for="wp_user_<?php echo $i; ?>_telegram_chat_id">Telegram Chat ID</label>
|
||||||
<input type="text" name="wp_user_<?php echo $i; ?>_telegram_chat_id" value="<?php echo esc_attr(get_option("wp_user_{$i}_telegram_chat_id")); ?>" />
|
<input type="text" name="wp_user_<?php echo $i; ?>_telegram_chat_id" value="<?php echo esc_attr(get_option("wp_user_{$i}_telegram_chat_id")); ?>" />
|
||||||
|
|
||||||
|
<!-- Button für individuelle Testnachricht -->
|
||||||
|
<input type="submit" name="send_test_message_user_<?php echo $i; ?>" class="button button-secondary" value="Testnachricht an <?php echo esc_attr(get_option("wp_user_{$i}_name")); ?>" />
|
||||||
</div>
|
</div>
|
||||||
<?php endfor; ?>
|
<?php endfor; ?>
|
||||||
</div>
|
</div>
|
||||||
@ -261,99 +194,152 @@ function wp_multi_comment_notifications_register_settings() {
|
|||||||
register_setting('wp_multi_comment_notifications_settings_group', 'wp_telegram_message');
|
register_setting('wp_multi_comment_notifications_settings_group', 'wp_telegram_message');
|
||||||
register_setting('wp_multi_comment_notifications_settings_group', 'wp_backend_button_url');
|
register_setting('wp_multi_comment_notifications_settings_group', 'wp_backend_button_url');
|
||||||
register_setting('wp_multi_comment_notifications_settings_group', 'wp_email_logo_url');
|
register_setting('wp_multi_comment_notifications_settings_group', 'wp_email_logo_url');
|
||||||
|
register_setting('wp_multi_comment_notifications_settings_group', 'wp_discord_webhook_url');
|
||||||
|
register_setting('wp_multi_comment_notifications_settings_group', 'wp_discord_message');
|
||||||
}
|
}
|
||||||
add_action('admin_init', 'wp_multi_comment_notifications_register_settings');
|
add_action('admin_init', 'wp_multi_comment_notifications_register_settings');
|
||||||
|
|
||||||
// 2. Kommentar-Benachrichtigung bei neuem Kommentar
|
/** -------------------------
|
||||||
|
* Kommentar-Benachrichtigung
|
||||||
|
* ------------------------- */
|
||||||
function wp_multi_comment_notifications_on_comment($comment_ID) {
|
function wp_multi_comment_notifications_on_comment($comment_ID) {
|
||||||
$comment = get_comment($comment_ID);
|
$comment = get_comment($comment_ID);
|
||||||
$comment_author = $comment->comment_author;
|
$author = $comment->comment_author;
|
||||||
$comment_text = $comment->comment_content;
|
$text = $comment->comment_content;
|
||||||
$site_name = get_bloginfo('name');
|
$post_id = $comment->comment_post_ID;
|
||||||
$backend_url = get_option('wp_backend_button_url');
|
$post_title = get_the_title($post_id); // Titel des Beitrags
|
||||||
$logo_url = esc_url(get_option('wp_email_logo_url'));
|
$site = get_bloginfo('name');
|
||||||
|
$url = get_option('wp_backend_button_url');
|
||||||
|
$logo = esc_url(get_option('wp_email_logo_url'));
|
||||||
|
$discord_webhook = get_option('wp_discord_webhook_url');
|
||||||
|
$discord_template = get_option('wp_discord_message');
|
||||||
|
|
||||||
|
$post_url = get_permalink($post_id);
|
||||||
|
$comment_date = get_comment_date('H:i - d.m.Y', $comment_ID); // Zeit und Datum im gewünschten Format
|
||||||
|
$comment_url = get_comment_link($comment_ID);
|
||||||
|
|
||||||
|
// Hole den Benutzernamen aus den Plugin-Einstellungen
|
||||||
|
$user_name = get_option("wp_user_1_name"); // Beispiel: Benutzer 1
|
||||||
|
|
||||||
|
// Nachricht für Discord
|
||||||
|
$discord_msg = strtr($discord_template, [
|
||||||
|
'{{COMMENT_AUTHOR}}' => $author,
|
||||||
|
'{{COMMENT_TEXT}}' => $text,
|
||||||
|
'{{POST_TITLE}}' => $post_title,
|
||||||
|
'{{SITE_NAME}}' => $site,
|
||||||
|
'{{POST_URL}}' => $post_url,
|
||||||
|
'{{COMMENT_DATE}}' => $comment_date,
|
||||||
|
'{{COMMENT_URL}}' => $comment_url,
|
||||||
|
'{{USER_NAME}}' => $user_name, // Benutzername aus den Optionen
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Nachricht per E-Mail verschicken
|
||||||
|
$email_message = get_option('wp_email_message');
|
||||||
|
$email_message = strtr($email_message, [
|
||||||
|
'{{COMMENT_AUTHOR}}' => $author,
|
||||||
|
'{{COMMENT_TEXT}}' => $text,
|
||||||
|
'{{USER_NAME}}' => $user_name, // Benutzername aus den Optionen
|
||||||
|
'{{POST_TITLE}}' => $post_title,
|
||||||
|
'{{SITE_NAME}}' => $site,
|
||||||
|
'{{POST_URL}}' => $post_url,
|
||||||
|
'{{COMMENT_DATE}}' => $comment_date,
|
||||||
|
'{{COMMENT_URL}}' => $comment_url
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Telegram-Nachricht
|
||||||
|
$telegram_message = get_option('wp_telegram_message');
|
||||||
|
$telegram_message = strtr($telegram_message, [
|
||||||
|
'{{COMMENT_AUTHOR}}' => $author,
|
||||||
|
'{{COMMENT_TEXT}}' => $text,
|
||||||
|
'{{USER_NAME}}' => $user_name, // Benutzername aus den Optionen
|
||||||
|
'{{POST_TITLE}}' => $post_title,
|
||||||
|
'{{SITE_NAME}}' => $site,
|
||||||
|
'{{POST_URL}}' => $post_url,
|
||||||
|
'{{COMMENT_DATE}}' => $comment_date,
|
||||||
|
'{{COMMENT_URL}}' => $comment_url
|
||||||
|
]);
|
||||||
|
$telegram_chat_id = get_option('wp_user_1_telegram_chat_id'); // Beispiel für den ersten Benutzer
|
||||||
|
wp_remote_post("https://api.telegram.org/bot" . get_option('wp_telegram_token') . "/sendMessage", [
|
||||||
|
'body' => [
|
||||||
|
'chat_id' => $telegram_chat_id,
|
||||||
|
'text' => $telegram_message
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
add_action('comment_post', 'wp_multi_comment_notifications_on_comment');
|
||||||
|
|
||||||
|
/** -------------------------
|
||||||
|
* Testnachrichten senden
|
||||||
|
* ------------------------- */
|
||||||
|
add_action('admin_init', function () {
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||||
for ($i = 1; $i <= 6; $i++) {
|
for ($i = 1; $i <= 6; $i++) {
|
||||||
$user_name = get_option("wp_user_{$i}_name");
|
if (isset($_POST["send_test_message_user_$i"])) {
|
||||||
$user_email = get_option("wp_user_{$i}_email");
|
wp_multi_comment_notifications_send_test_message($i);
|
||||||
$telegram_chat_id = get_option("wp_user_{$i}_telegram_chat_id");
|
|
||||||
|
|
||||||
$email_message = str_replace(
|
|
||||||
['{{COMMENT_AUTHOR}}', '{{COMMENT_TEXT}}', '{{USER_NAME}}'],
|
|
||||||
[$comment_author, $comment_text, $user_name],
|
|
||||||
get_option('wp_email_message')
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!empty($backend_url)) {
|
|
||||||
$email_message .= "\n\nWeitere Details hier: " . $backend_url;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($user_email) {
|
|
||||||
$html_message = '';
|
|
||||||
if (!empty($logo_url)) {
|
|
||||||
$html_message .= '<img src="' . $logo_url . '" alt="Logo" style="max-width: 100%; height: auto; margin-bottom: 20px;"><br>';
|
|
||||||
}
|
|
||||||
|
|
||||||
$html_message .= nl2br(esc_html($email_message));
|
|
||||||
|
|
||||||
$headers = [
|
|
||||||
'Content-Type: text/html; charset=UTF-8',
|
|
||||||
'From: ' . $site_name . ' <no-reply@' . $_SERVER['SERVER_NAME'] . '>'
|
|
||||||
];
|
|
||||||
|
|
||||||
wp_mail(trim($user_email), 'Neuer Kommentar', $html_message, $headers);
|
|
||||||
}
|
|
||||||
|
|
||||||
$telegram_message = str_replace(
|
|
||||||
['{{COMMENT_AUTHOR}}', '{{COMMENT_TEXT}}', '{{USER_NAME}}'],
|
|
||||||
[$comment_author, $comment_text, $user_name],
|
|
||||||
get_option('wp_telegram_message')
|
|
||||||
);
|
|
||||||
|
|
||||||
if ($telegram_chat_id) {
|
|
||||||
wp_multi_comment_notifications_send_telegram(get_option('wp_telegram_token'), $telegram_chat_id, $comment_ID, $telegram_message);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
add_action('wp_insert_comment', 'wp_multi_comment_notifications_on_comment', 10, 1);
|
});
|
||||||
|
|
||||||
// 3. Telegram Nachricht senden (mit Inline-Button)
|
function wp_multi_comment_notifications_send_test_message($user_number) {
|
||||||
|
$name = get_option("wp_user_{$user_number}_name");
|
||||||
|
$email = get_option("wp_user_{$user_number}_email");
|
||||||
|
$chat_id = get_option("wp_user_{$user_number}_telegram_chat_id");
|
||||||
|
$discord_webhook = get_option('wp_discord_webhook_url');
|
||||||
|
$token = get_option('wp_telegram_token');
|
||||||
|
$button_url = get_option('wp_backend_button_url');
|
||||||
|
|
||||||
|
$message = "Dies ist eine Testnachricht für $name.";
|
||||||
|
|
||||||
|
if ($email) {
|
||||||
|
wp_mail($email, 'Testnachricht', $message);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($chat_id) {
|
||||||
|
wp_multi_comment_notifications_send_telegram($token, $chat_id, 0, $message);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($discord_webhook) {
|
||||||
|
wp_multi_comment_notifications_send_discord($discord_webhook, $message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** -------------------------
|
||||||
|
* Telegram-Nachricht mit Button
|
||||||
|
* ------------------------- */
|
||||||
function wp_multi_comment_notifications_send_telegram($token, $chat_id, $comment_ID, $message) {
|
function wp_multi_comment_notifications_send_telegram($token, $chat_id, $comment_ID, $message) {
|
||||||
$url = "https://api.telegram.org/bot$token/sendMessage";
|
$url = "https://api.telegram.org/bot$token/sendMessage";
|
||||||
$button_url = get_option('wp_backend_button_url');
|
$button_url = get_option('wp_backend_button_url');
|
||||||
$inline_button = [];
|
|
||||||
|
|
||||||
if (!empty($button_url)) {
|
|
||||||
$inline_button = [
|
|
||||||
'inline_keyboard' => [
|
|
||||||
[
|
|
||||||
['text' => 'Zum Backend', 'url' => $button_url]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'chat_id' => $chat_id,
|
'chat_id' => $chat_id,
|
||||||
'text' => $message,
|
'text' => $message,
|
||||||
|
'parse_mode' => 'HTML'
|
||||||
];
|
];
|
||||||
|
|
||||||
if (!empty($inline_button)) {
|
if ($button_url) {
|
||||||
$data['reply_markup'] = json_encode($inline_button);
|
$data['reply_markup'] = json_encode([
|
||||||
|
'inline_keyboard' => [[['text' => 'Zum Backend', 'url' => $button_url]]]
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$options = [
|
wp_remote_post($url, [
|
||||||
'http' => [
|
'body' => $data,
|
||||||
'method' => 'POST',
|
'timeout' => 10,
|
||||||
'content' => http_build_query($data),
|
'headers' => ['Content-Type' => 'application/x-www-form-urlencoded'],
|
||||||
'header' => "Content-Type: application/x-www-form-urlencoded\r\n"
|
]);
|
||||||
]
|
|
||||||
];
|
|
||||||
|
|
||||||
$context = stream_context_create($options);
|
|
||||||
$response = file_get_contents($url, false, $context);
|
|
||||||
|
|
||||||
if ($response === FALSE) {
|
|
||||||
error_log("Fehler bei Telegram-Nachricht: $url");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** -------------------------
|
||||||
|
* Discord-Nachricht senden
|
||||||
|
* ------------------------- */
|
||||||
|
function wp_multi_comment_notifications_send_discord($webhook_url, $message) {
|
||||||
|
$payload = json_encode(['content' => $message]);
|
||||||
|
|
||||||
|
wp_remote_post($webhook_url, [
|
||||||
|
'headers' => ['Content-Type' => 'application/json'],
|
||||||
|
'body' => $payload,
|
||||||
|
'timeout' => 10,
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user