diff --git a/src/AKSRT/Widgets/CategoriesWidget.php b/src/AKSRT/Widgets/CategoriesWidget.php index fe2362ce..5e412231 100644 --- a/src/AKSRT/Widgets/CategoriesWidget.php +++ b/src/AKSRT/Widgets/CategoriesWidget.php @@ -22,14 +22,22 @@ class CategoriesWidget extends \WP_Widget { ); } - public function widget($args, $instance): void { - echo $args['before_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped - - $title = apply_filters('widget_title', (string) ($instance['title'] ?? ''), $instance, $this->id_base); - if ($title !== '') { - echo $args['before_title'] . esc_html($title) . $args['after_title']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + /** @return array */ + public static function parse_ids_static(string $raw): array { + if ($raw === '') { + return []; } + $ids = []; + foreach (preg_split('/[\s,]+/', $raw) ?: [] as $p) { + $id = (int) $p; + if ($id > 0) { + $ids[] = $id; + } + } + return array_values(array_unique($ids)); + } + public static function render_html(array $instance): string { $count = max(1, min(50, (int) ($instance['count'] ?? 8))); $orderby = sanitize_key((string) ($instance['orderby'] ?? 'count')); if (!in_array($orderby, ['count', 'name', 'id', 'slug'], true)) { @@ -40,8 +48,8 @@ class CategoriesWidget extends \WP_Widget { $hierarchical = !empty($instance['hierarchical']); $parent = max(0, (int) ($instance['parent'] ?? 0)); $show_count = !isset($instance['show_count']) || !empty($instance['show_count']); - $exclude = $this->parse_ids((string) ($instance['exclude'] ?? '')); - $include = $this->parse_ids((string) ($instance['include'] ?? '')); + $exclude = self::parse_ids_static((string) ($instance['exclude'] ?? '')); + $include = self::parse_ids_static((string) ($instance['include'] ?? '')); $term_args = [ 'taxonomy' => 'category', @@ -65,11 +73,13 @@ class CategoriesWidget extends \WP_Widget { $cats = get_categories($term_args); if (!$cats) { - echo $args['after_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped - return; + return function_exists('aksrt_get_ajax_null') + ? aksrt_get_ajax_null(__('暂无分类', 'aksrt')) + : '

' . esc_html__('暂无分类', 'aksrt') . '

'; } - echo '