@ -1,359 +1,345 @@
< ? php
< ? php
/*
/*
* 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
* Tested up to: 6.7.2
* Tested up to: 6.7.2
* License: GPL2
* License: GPL2
* 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
* - Telegram: https://t.me/M_Viper04
* - Telegram: https://t.me/M_Viper04
*/
*/
if ( ! defined ( 'ABSPATH' ) ) {
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' ),
// Prüft, ob WP Multi Toolkit installiert und aktiv ist
'wp_ multi_cmn_update_dashboard_widget_content'
if ( ! is_plugin_active ( 'wp- multi-toolkit/wp-multi-toolkit.php' )) {
);
add_action ( 'admin_notices' , 'wp_multi_comment_notifications_dependency_notice' );
}
return false ;
add_action ( 'wp_dashboard_setup' , 'wp_multi_cmn_dashboard_widget' );
}
return true ;
// Cron-Intervall „stündlich“ definieren
}
add_filter ( 'cron_schedules' , function ( $schedules ) {
$schedules [ 'hourly' ] = array (
// Fehlermeldung für Admin-Bereich mit Download-Button
'interval' => 3600 ,
function wp_multi_comment_notifications_dependency_notice () {
'display' => __ ( 'Stündlich' , 'wp-multi-comment-notifications' ),
?>
);
<div class="notice notice-error">
return $schedules ;
<p>
});
<?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;">
// Cron-Event planen
<?php _e('WP Multi Toolkit herunterladen', 'wp-multi-comment-notifications'); ?>
function wp_multi_cmn_schedule_update_check () {
</a>
if ( ! wp_next_scheduled ( 'wp_multi_cmn_update_check_event' )) {
</p>
wp_schedule_event ( time (), 'hourly' , 'wp_multi_cmn_update_check_event' );
</div>
}
<?php
}
}
add_action ( 'wp' , 'wp_multi_cmn_schedule_update_check' );
// Plugin nur initialisieren, wenn Abhängigkeit erfüllt ist
// Gitea API aufrufen
if (wp_multi_comment_notifications_check_dependency()) {
function wp_multi_cmn_fetch_latest_release ( $show_prereleases = false ) {
// Hier würde der restliche Plugin-Code folgen
$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 ));
} else {
// Optional: Plugin komplett deaktivieren, wenn Abhängigkeit fehlt
if ( is_wp_error ( $response )) {
add_action('admin_init', function() {
error_log ( 'WP Multi Comment Notifications – Update Fehler: ' . $response -> get_error_message ( ));
deactivate_plugins(plugin_basename(__FILE__ ));
return false ;
});
}
}
$body = wp_remote_retrieve_body ( $response );
define('WPMCN_PLUGIN_VERSION', '1.2' );
$data = json_decode ( $body , true );
define('WPMCN_PLUGIN_DIR', plugin_dir_path(__FILE__) );
if ( ! is_array ( $data )) {
// 1. Plugin-Optionen im Admin-Bereich unter dem Menü "Kommentare" hinzufügen
error_log ( 'WP M ulti C omment N otifications – Ungültige API-Antwort' );
function wp_m ulti_c omment_n otifications_menu() {
return false ;
add_submenu_page(
}
'edit-comments.php',
'WP Multi Comment Notifications',
foreach ( $data as $release ) {
'Kommentar Benachrichtigungen',
if ( ! $show_prereleases && isset ( $release [ 'prerelease' ]) && $release [ 'prerelease' ]) {
'manage_options',
continue ;
'wp-multi-comment-notifications',
}
'wp_multi_comment_notifications_settings_page'
if ( ! empty ( $release [ 'tag_name' ])) {
);
return $release ;
}
}
add_action('admin_menu', 'wp_multi_comment_notifications_menu');
}
function wp_multi_comment_notifications_settings_page() {
return null ;
?>
}
<div class="wrap">
<h1>WP Multi Comment Notifications Einstellungen</h1>
// Cron Callback
<form method="post" action="options.php">
function wp_multi_cmn_update_check () {
<?php
if ( ! function_exists ( 'get_plugin_data' )) {
settings_fields( 'wp_multi_comment_notifications_settings_group' );
require_once ABSPATH . 'wp-admin/includes/plugin.php' ;
do_settings_sections( 'wp-multi-comment-notifications' );
}
?>
<h3>Telegram Bot Token</h3>
$plugin_data = get_plugin_data ( __FILE__ );
<label for="wp_telegram_token">Telegram Bot Token</label>
$installed_version = $plugin_data [ 'Version' ];
<input type="text" name="wp_telegram_token" value="<?php echo esc_attr(get_option('wp_telegram_token')); ?>" class="regular-text" />
$show_prereleases = get_option ( 'wp_multi_cmn_show_prereleases' , false );
<h3>Discord Webhook URL</h3>
$release = wp_multi_cmn_fetch_latest_release ( $show_prereleases );
<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" />
if ( $release ) {
update_option ( 'wp_multi_cmn_latest_version' , $release [ 'tag_name' ]);
<h3>Nachricht für Discord</h3>
update_option ( 'wp_multi_cmn_release_notes' , $release [ 'body' ]);
<textarea name="wp_discord_message" rows="5" class="large-text"><?php echo esc_textarea(get_option('wp_discord_message')); ?></textarea>
update_option ( 'wp_multi_cmn_is_prerelease' , $release [ 'prerelease' ]);
<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>
add_action ( 'wp_multi_cmn_update_check_event' , 'wp_multi_cmn_update_check' );
<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>, <code>{{POST_TITLE}}</code>, <code>{{SITE_NAME}}</code>, <code>{{POST_URL}}</code>, <code>{{COMMENT_DATE}}</code>, <code>{{COMMENT_URL}}</code> </p>
// Widget Callback
function wp_multi_cmn_update_dashboard_widget_content () {
<h3>Nachricht für Telegram</h3>
if ( ! function_exists ( 'get_plugin_data' )) {
<textarea name="wp_telegram_message" rows="5" class="large-text"><?php echo esc_textarea(get_option('wp_telegram_message')); ?></textarea>
require_once ABSPATH . 'wp-admin/includes/plugin.php' ;
<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>
$plugin_data = get_plugin_data ( __FILE__ );
<label for="wp_backend_button_url">URL für Backend Button</label>
$installed_version = $plugin_data [ 'Version' ];
<input type="text" name="wp_backend_button_url" value="<?php echo esc_attr(get_option('wp_backend_button_url')); ?>" class="regular-text" />
$show_prereleases = get_option ( 'wp_multi_cmn_show_prereleases' , false );
<h3>Logo/Banner für E-Mail</h3>
$release = wp_multi_cmn_fetch_latest_release ( $show_prereleases );
<label for="wp_email_logo_url">Logo/Banner URL</label>
<input type="text" name="wp_email_logo_url" value="<?php echo esc_attr(get_option('wp_email_logo_url')); ?>" class="regular-text" />
if ( $release === false ) {
<p>Füge hier die vollständige URL zum Logo/Banner ein, das in der E-Mail angezeigt werden soll.</p>
echo '<p style="color:red;">Fehler beim Abrufen der Update-Informationen.</p>' ;
return ;
<div class="user-boxes">
}
<?php for ($i = 1; $i <= 6; $i++) : ?>
<div class="user-box">
$latest_version = $release [ 'tag_name' ];
<h3>User <?php echo $i; ?></h3>
$release_notes = isset ( $release [ 'body' ]) ? $release [ 'body' ] : '' ;
<label for="wp_user_<?php echo $i; ?>_name">Name</label>
$is_prerelease = isset ( $release [ 'prerelease' ]) && $release [ 'prerelease' ];
<input type="text" name="wp_user_<?php echo $i; ?>_name" value="<?php echo esc_attr(get_option("wp_user_{$i}_name")); ?>" />
if ( version_compare ( $installed_version , $latest_version , '>=' )) {
<label for="wp_user_<?php echo $i; ?>_email">E-Mail Adresse</label>
echo '<p s tyl e="color:green;">Du verwendest die aktuelle Version: <strong>' . esc_html ( $installed_version ) . '</strong></p>' ;
<input typ e="email" name="wp_user_<?php echo $i; ?>_email" value="<?php echo esc_attr(get_option("wp_user_{$i}_email")); ?>" />
} else {
echo '<p style="color:red;"><strong>Neue Version verfügbar: ' . esc_html ( $latest_version ) . '</strong></p>' ;
<label for="wp_user_<?php echo $i; ?>_telegram_chat_id">Telegram Chat ID</label>
echo '<p>Installiert: <strong>' . esc_html ( $installed_version ) . '</strong></p>' ;
<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")); ?>" />
if ( $is_prerelease && $show_prereleases ) {
<!-- Button für individuelle Testnachricht -->
echo '<p s tyl e="color:blue;">Hinweis: Dies ist ein PreRelease.</p>' ;
<input typ e="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>
<?php endfor; ?>
if ( ! empty ( $release_notes )) {
</div>
echo '<p><strong>Release Notes:</strong><br>' . nl2br ( esc_html ( $release_notes )) . '</p>' ;
<?php submit_button(); ?>
}
</form>
</div>
$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>' ;
<style>
}
.user-boxes {
}
display: flex;
flex-wrap: wrap;
gap: 20px;
// 1. Plugin-Optionen im Admin-Bereich unter dem Menü "Kommentare" hinzufügen
}
function wp_multi_comment_notifications_menu () {
add_submenu_page (
.user-box {
'edit-comments.php' ,
width: 30%;
'WP Multi Comment Notifications' ,
padding: 15px;
'Kommentar Benachrichtigungen' ,
border: 1px solid #ddd;
'manage_options' ,
border-radius: 5px;
'wp-multi-comment-notifications' ,
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
'wp_multi_comment_notifications_settings_page'
}
);
}
.user-box h3 {
add_action ( 'admin_menu' , 'wp_multi_comment_notifications_menu' );
margin-top: 0;
}
function wp_multi_comment_notifications_settings_page () {
?>
.user-box label {
<div class="wrap">
display: block;
<h1>WP Multi Comment Notifications Einstellungen</h1>
margin-bottom: 5px;
<form method="post" action="options.php">
}
<?php
settings_fields( 'wp_multi_comment_notifications_settings_group' );
.user-box input,
do_settings_sections( 'wp-multi-comment-notifications' );
.user-box textarea {
?>
width: 100%;
<h3>Telegram Bot Token</h3>
padding: 8px;
<label for="wp_telegram_token">Telegram Bot Token</label>
margin-bottom: 10px;
<input type="text" name="wp_telegram_token" value="<?php echo esc_attr(get_option('wp_telegram_token')); ?>" class="regular-text" />
border: 1px solid #ddd;
border-radius: 5px;
<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>
<p>Verwende Platzhalter wie <code>{{COMMENT_AUTHOR}}</code>, <code>{{COMMENT_TEXT}}</code>, <code>{{USER_NAME}}</code> für dynamische Daten.</p>
.regular-text {
width: 100%;
<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>
<p>Verwende Platzhalter wie <code>{{COMMENT_AUTHOR}}</code>, <code>{{COMMENT_TEXT}}</code>, <code>{{USER_NAME}}</code> für dynamische Daten.</p>
.large-text {
width: 100%;
<h3>Backend-Button URL</h3>
height: 150px;
<label for="wp_backend_button_url">URL für Backend Button</label>
}
<input type="text" name="wp_backend_button_url" value="<?php echo esc_attr(get_option('wp_backend_button_url')); ?>" class="regular-text" / >
</style >
<?php
<h3>Logo/Banner für E-Mail</h3>
}
<label for="wp_email_logo_url">Logo/Banner URL</label>
<input type="text" name="wp_email_logo_url" value="<?php echo esc_attr(get_option('wp_email_logo_url')); ?>" class="regular-text" />
function wp_multi_comment_notifications_register_settings() {
<p>Füge hier die vollständige URL zum Logo/Banner ein, das in der E-Mail angezeigt werden soll.</p>
for ($i = 1; $i <= 6; $i++) {
register_setting('wp_multi_comment_notifications_settings_group', "wp_user_{$i}_name");
<div class="user-boxes">
register_setting('wp_multi_comment_notifications_settings_group', "wp_user_{$i}_email");
<?php for ($i = 1; $i <= 6; $i++) : ?>
register_setting('wp_multi_comment_notifications_settings_group', "wp_user_{$i}_telegram_chat_id");
<div class="user-box">
}
<h3>User <?php echo $i; ?></h3>
register_setting('wp_multi_comment_notifications_settings_group', 'wp_telegram_token');
<label for="wp_user_<?php echo $i; ?>_name">Name</label>
register_setting('wp_multi_comment_notifications_settings_group', 'wp_email_message');
<input type="text" name="wp_user_<?php echo $i; ?>_name" value="<?php echo esc_attr(get_option("wp_user_{$i}_name")); ?>" />
register_setting('wp_multi_comment_notifications_settings_group', 'wp_telegram_message');
register_setting('wp_multi_comment_notifications_settings_group', 'wp_backend_button_url');
<label for="wp_user_<?php echo $i; ?>_email">E-Mail Adresse</label>
register_setting('wp_multi_comment_notifications_settings_group', 'wp_email_logo_url');
<input type="email" name="wp_user_<?php echo $i; ?>_email" value="<?php echo esc_attr(get_option("wp_user_{$i}_email")); ?>" />
register_setting('wp_multi_comment_notifications_settings_group', 'wp_discord_webhook_url');
register_setting('wp_multi_comment_notifications_settings_group', 'wp_discord_message');
<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")); ?>" />
add_action('admin_init', 'wp_multi_comment_notifications_register_settings');
</div>
<?php endfor; ?>
/** -------------------------
</div>
* Kommentar-Benachrichtigung
<?php submit_button(); ?>
* ------------------------- */
</form>
function wp_multi_comment_notifications_on_comment($comment_ID) {
</div>
$comment = get_comment($comment_ID);
$author = $comment->comment_author;
<style>
$text = $comment->comment_content;
.user-boxes {
$post_id = $comment->comment_post_ID;
display: flex;
$post_title = get_the_title($post_id); // Titel des Beitrags
flex-wrap: wrap ;
$site = get_bloginfo('name') ;
gap: 20px ;
$url = get_option('wp_backend_button_url') ;
}
$logo = esc_url(get_option('wp_email_logo_url'));
$discord_webhook = get_option('wp_discord_webhook_url');
.user-box {
$discord_template = get_option('wp_discord_message');
width: 30%;
padding: 15px ;
$post_url = get_permalink($post_id) ;
border: 1px solid #ddd;
$comment_date = get_comment_date('H:i - d.m.Y', $comment_ID); // Zeit und Datum im gewünschten Format
border-radius: 5px ;
$comment_url = get_comment_link($comment_ID) ;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}
// Hole den Benutzernamen aus den Plugin-Einstellungen
$user_name = get_option("wp_user_1_name"); // Beispiel: Benutzer 1
.user-box h3 {
margin-top: 0;
// Nachricht für Discord
}
$discord_msg = strtr($discord_template, [
'{{COMMENT_AUTHOR}}' => $author,
.user-box label {
'{{COMMENT_TEXT}}' => $text,
display: block;
'{{POST_TITLE}}' => $post_title,
margin-bottom: 5px;
'{{SITE_NAME}}' => $site,
}
'{{POST_URL}}' => $post_url,
'{{COMMENT_DATE}}' => $comment_date,
.user-box input ,
'{{COMMENT_URL}}' => $comment_url ,
.user-box textarea {
'{{USER_NAME}}' => $user_name, // Benutzername aus den Optionen
width: 100% ;
]) ;
padding: 8px;
margin-bottom: 10px;
// Nachricht per E-Mail verschicken
border: 1px solid #ddd ;
$email_message = get_option('wp_email_message') ;
border-radius: 5px;
$email_message = strtr($email_message, [
}
'{{COMMENT_AUTHOR}}' => $author,
'{{COMMENT_TEXT}}' => $text,
.regular-text {
'{{USER_NAME}}' => $user_name, // Benutzername aus den Optionen
width: 100%;
'{{POST_TITLE}}' => $post_title,
}
'{{SITE_NAME}}' => $site,
'{{POST_URL}}' => $post_url,
.large-text {
'{{COMMENT_DATE}}' => $comment_date,
width: 100%;
'{{COMMENT_URL}}' => $comment_url
height: 150px ;
]) ;
}
</style>
// Telegram-Nachricht
<?php
$telegram_message = get_option('wp_telegram_message');
}
$telegram_message = strtr($telegram_message, [
'{{COMMENT_AUTHOR}}' => $author,
function wp_multi_comment_notifications_register_settings() {
'{{COMMENT_TEXT}}' => $text,
for ($i = 1; $i <= 6; $i++) {
'{{USER_NAME}}' => $user_name, // Benutzername aus den Optionen
register_setting('wp_multi_comment_notifications_settings_group', "wp_user_{$i}_name");
'{{POST_TITLE}}' => $post_title,
register_setting('wp_multi_comment_notifications_settings_group', "wp_user_{$i}_email");
'{{SITE_NAME}}' => $site,
register_setting('wp_multi_comment_notifications_settings_group', "wp_user_{$i}_telegram_chat_id");
'{{POST_URL}}' => $post_url,
}
'{{COMMENT_DATE}}' => $comment_date,
register_setting('wp_multi_comment_notifications_settings_group', 'wp_telegram_token');
'{{COMMENT_URL}}' => $comment_url
register_setting('wp_multi_comment_notifications_settings_group', 'wp_email_message' );
] );
register_setting('wp_multi_comment_notifications_settings_group', 'wp_telegram_message');
$telegram_chat_id = get_option('wp_user_1_telegram_chat_id'); // Beispiel für den ersten Benutzer
register_setting('wp_multi_comment_notifications_settings_group', 'wp_backend_button_url');
wp_remote_post("https://api.telegram.org/bot" . get_option('wp_telegram_token') . "/sendMessage", [
register_setting('wp_multi_comment_notifications_settings_group', 'wp_email_logo_url');
'body' => [
}
'chat_id' => $telegram_chat_id,
add_action('admin_init', 'wp_multi_comment_notifications_register_settings');
'text' => $telegram_message
]
// 2. Kommentar-Benachrichtigung bei neuem Kommentar
]);
function wp_multi_comment_notifications_on_comment($comment_ID) {
}
$comment = get_comment($comment_ID);
$comment_author = $comment->comment_author ;
add_action('comment_post', 'wp_multi_comment_notifications_on_comment') ;
$comment_text = $comment->comment_content;
$site_name = get_bloginfo('name');
/** -------------------------
$backend_url = get_option('wp_backend_button_url');
* Testnachrichten senden
$logo_url = esc_url(get_option('wp_email_logo_url'));
* ------------------------- */
add_action('admin_init', function () {
for ($i = 1; $i <= 6; $i++ ) {
if ($_SERVER['REQUEST_METHOD'] === 'POST' ) {
$user_name = get_option("wp_user_{$i}_name");
for ($i = 1; $i <= 6; $i++) {
$user_email = get_option("wp _user_{ $i}_email");
if (isset($_POST["send_test_message _user_$i"])) {
$telegram_chat_id = get_option("wp_user_{$i}_telegram_chat_id" );
wp_multi_comment_notifications_send_test_message($i );
}
$email_message = str_replace(
}
['{{COMMENT_AUTHOR}}', '{{COMMENT_TEXT}}', '{{USER_NAME}}'],
}
[$comment_author, $comment_text, $user_name],
});
get_option('wp_email_message')
);
function wp_multi_comment_notifications_send_test_message($user_number) {
$name = get_option("wp_user_{$user_number}_name");
if (!empty($backend_url)) {
$email = get_option("wp_user_{$user_number}_email");
$email_message .= "\n\nWeitere Details hier: " . $backend_url ;
$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');
if ($user_email) {
$button_url = get_option('wp_backend_button_url');
$html_message = '';
if (!empty($logo_url)) {
$message = "Dies ist eine Testnachricht für $name.";
$html_message .= '<img src="' . $logo_url . '" alt="Logo" style="max-width: 100%; height: auto; margin-bottom: 20px;"><br>';
}
if ($email) {
wp_mail($email, 'Testnachricht', $message);
$html_message .= nl2br(esc_html($email_message));
}
$headers = [
if ($chat_id) {
'Content-Type: text/html; charset=UTF-8',
wp_multi_comment_notifications_send_telegram($token, $chat_id, 0, $message);
'From: ' . $site_name . ' <no-reply@' . $_SERVER['SERVER_NAME'] . '>'
}
];
if ($discord_webhook) {
wp_mail(trim($user_email), 'Neuer Kommentar', $html_message, $headers );
wp_multi_comment_notifications_send_discord($discord_webhook, $message );
}
}
}
$telegram_message = str_replace(
['{{COMMENT_AUTHOR}}', '{{COMMENT_TEXT}}', '{{USER_NAME}}'],
/** -------------------------
[$comment_author, $comment_text, $user_name],
* Telegram-Nachricht mit Button
get_option('wp_telegram_message')
* ------------------------- */
);
function wp_multi_comment_notifications_send_telegram($token, $chat_id, $comment_ID, $message) {
$url = "https://api.telegram.org/bot$token/sendMessage";
if ($telegram_chat_id) {
$button_url = get_option('wp_backend_button_url');
wp_multi_comment_notifications_send_telegram(get_option('wp_telegram_token'), $telegram_chat_id, $comment_ID, $telegram_message);
}
$data = [
}
'chat_id' => $chat_id,
}
'text' => $message,
add_action('wp_insert_comment', 'wp_multi_comment_notifications_on_comment', 10, 1);
'parse_mode' => 'HTML'
];
// 3. Telegram Nachricht senden (mit Inline-Button)
function wp_multi_comment_notifications_send_telegram($token, $chat_id, $comment_ID, $message ) {
if ($button_url ) {
$url = "https://api.telegram.org/bot$token/sendMessage";
$data['reply_markup'] = json_encode([
$button_url = get_option('wp_backend_ button_url');
'inline_keyboard' => [[['text' => 'Zum Backend', 'url' => $ button_url]]]
$inline_button = [] ;
]) ;
}
if (!empty($button_url)) {
$inline_button = [
wp_remote_post($url, [
'inline_keyboard' => [
'body' => $data,
[
'timeout' => 10,
['text' => 'Zum Backend', 'url' => $button_url]
'headers' => ['Content-Type' => 'application/x-www-form-urlencoded'],
]
]);
]
}
];
}
/** -------------------------
* Discord-Nachricht senden
$data = [
* ------------------------- */
'chat_id' => $chat_id,
function wp_multi_comment_notifications_send_discord($webhook_url, $message) {
' tex t' => $message,
$payload = json_encode(['con ten t' => $message]);
];
wp_remote_post($webhook_url, [
if (!empty($inline_button)) {
'headers' => ['Content-Type' => 'application/json'],
$data['reply_markup'] = json_encode($inline_button);
'body' => $payload,
}
'timeout' => 10,
]);
$options = [
}
'http' => [
'method' => 'POST',
'content' => http_build_query($data),
'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");
}
}