Кастомный блок уведомлений buddypress не отображает сами уведомления
Я пытаюсь создать блок с уведомлениями который должен отображаться с помощью шорткода но почему то я получаю одно сообщение (Ошибка: Невозможно получить данные об уведомлениях.) в место самих уведомлений. Подскажите где я накосячила? Сам код:
<?php
/*
Plugin Name: BuddyPress Real-Time Notifications
Description:
Version: 1.0
Author:
*/
// JavaScript
function bprtn_enqueue_scripts() {
wp_enqueue_script('bprtn-scripts', plugin_dir_url(__FILE__) . 'scripts.js', array('jquery'), null, true);
}
add_action('wp_enqueue_scripts', 'bprtn_enqueue_scripts');
// CSS
function bprtn_enqueue_styles() {
wp_enqueue_style('bprtn-styles', plugin_dir_url(__FILE__) . 'styles.css');
}
add_action('wp_enqueue_scripts', 'bprtn_enqueue_styles');
// function
function bprtn_display_notification($notification) {
if (isset($notification->component_name) && isset($notification->component_action) && isset($notification->item_id)) {
echo '<div class="bprtn-notification">';
echo '<p class="bprtn-description">' . bp_the_notification_description($notification->component_action, $notification->item_id) . '</p>';
echo '<p class="bprtn-date">' . bp_the_notification_time_since($notification->date_notified) . '</p>';
echo '<div class="bprtn-actions">';
// buttons
bp_the_notification_action_links(array('before' => '<div class="bprtn-action">', 'after' => '</div>', 'notification' => $notification));
echo '</div>';
echo '</div>';
} else {
echo '<p class="bprtn-notification-error">Ошибка: Невозможно получить данные об уведомлениях.</p>';
}
}
// function load notifications
function bprtn_load_notifications() {
$user_id = bp_loggedin_user_id();
$notifications = bp_notifications_get_notifications_for_user($user_id);
if (!empty($notifications)) {
foreach ($notifications as $notification) {
bprtn_display_notification($notification);
}
} else {
echo '<p class="bprtn-no-notifications">Нет новых уведомлений.</p>';
}
}
// Шорткод
function bprtn_notifications_shortcode() {
ob_start();
bprtn_load_notifications();
return ob_get_clean();
}
add_shortcode('bprtn_notifications', 'bprtn_notifications_shortcode');
// AJAX
function bprtn_mark_as_read() {
if (isset($_POST['notification_id'])) {
$notification_id = $_POST['notification_id'];
bp_notifications_mark_notifications_by_id(array($notification_id), 'read');
}
wp_die();
}
add_action('wp_ajax_bprtn_mark_as_read', 'bprtn_mark_as_read');
?>