__('显示论坛最新话题列表(共享迷你行渲染)。', 'aksrt'), 'classname' => 'widget_aksrt_forum_recent_topics', ] ); } public function widget($args, $instance): void { if (!post_type_exists('aksrt_forum_topic')) { return; } $title = !empty($instance['title']) ? $instance['title'] : __('最新话题', 'aksrt'); $instance['orderby'] = 'date'; $instance['period'] = 'all'; $instance['style'] = sanitize_key((string) ($instance['style'] ?? 'mini')); if (!in_array($instance['style'], ['mini', 'rank'], true)) { $instance['style'] = 'mini'; } $instance['paginate'] = sanitize_key((string) ($instance['paginate'] ?? 'ajax')); $instance['plate'] = max(0, (int) ($instance['plate'] ?? 0)); $payload = WidgetForumHotTopics::query_payload($instance, 1); echo $args['before_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo $args['before_title'] . esc_html($title) . $args['after_title']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped $rest = rest_url('aksrt/v1/widgets/forum-topics'); $in_affix = !empty($instance['in_affix']); $wrap = 'ajaxpager' . ($in_affix ? ' is-affix' : ''); echo '
sanitize_text_field($new_instance['title'] ?? ''), 'count' => max(1, min(20, (int) ($new_instance['count'] ?? 5))), 'plate' => max(0, (int) ($new_instance['plate'] ?? 0)), 'style' => $style, 'paginate' => in_array(sanitize_key((string) ($new_instance['paginate'] ?? 'ajax')), ['none', 'ajax', 'number'], true) ? sanitize_key((string) ($new_instance['paginate'] ?? 'ajax')) : 'ajax', 'in_affix' => !empty($new_instance['in_affix']) ? 1 : 0, ]; } }