feat(admin): dashboard widget shown only when there are failed queue items
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Cf7stg;
|
||||
|
||||
final class Dashboard_Widget
|
||||
{
|
||||
public function register(): void
|
||||
{
|
||||
add_action('wp_dashboard_setup', [$this, 'maybe_register_widget']);
|
||||
}
|
||||
|
||||
public function maybe_register_widget(): void
|
||||
{
|
||||
if (Queue::count_failed() === 0) return;
|
||||
wp_add_dashboard_widget(
|
||||
'cf7stg_dashboard_errors',
|
||||
'⚠️ CF7 Spam → Telegram: ошибки доставки',
|
||||
[$this, 'render']
|
||||
);
|
||||
}
|
||||
|
||||
public function render(): void
|
||||
{
|
||||
$failed = Queue::list_failed(10);
|
||||
$count = Queue::count_failed();
|
||||
$settings_url = admin_url('options-general.php?page=cf7stg-settings');
|
||||
include CF7STG_PLUGIN_DIR . 'admin/views/dashboard-widget.php';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
/** @var array<int,object> $failed */
|
||||
/** @var int $count */
|
||||
/** @var string $settings_url */
|
||||
?>
|
||||
<p>Есть <b><?php echo (int)$count; ?></b> неотправленных сообщений (TG-API отвечает ошибкой):</p>
|
||||
<ul style="margin:0 0 8px 18px;list-style:disc">
|
||||
<?php foreach ($failed as $row): ?>
|
||||
<li>
|
||||
<?php echo esc_html((string)$row->created_at); ?> —
|
||||
<?php echo esc_html((string)$row->last_error); ?>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
<p><a href="<?php echo esc_url($settings_url); ?>" class="button">Открыть настройки →</a></p>
|
||||
Reference in New Issue
Block a user