esc_html__('展示开启付费/积分可见的文章。', 'aksrt'), 'classname' => 'widget_aksrt_paid_posts', ] ); } public function widget($args, $instance): void { $count = max(1, min(20, (int) ($instance['count'] ?? 6))); $orderby = sanitize_key((string) ($instance['orderby'] ?? 'date')); $query = [ 'post_type' => 'post', 'post_status' => 'publish', 'posts_per_page' => $count, 'order' => 'DESC', 'meta_query' => [ 'relation' => 'OR', [ 'key' => '_aksrt_pay_price', 'value' => 0, 'compare' => '>', 'type' => 'NUMERIC', ], [ 'key' => '_aksrt_credits_cost', 'value' => 0, 'compare' => '>', 'type' => 'NUMERIC', ], [ 'key' => '_aksrt_visibility', 'value' => ['pay', 'credits'], 'compare' => 'IN', ], ], ]; if ($orderby === 'views') { $query['meta_key'] = '_aksrt_views'; $query['orderby'] = 'meta_value_num'; } elseif ($orderby === 'price') { $query['meta_key'] = '_aksrt_pay_price'; $query['orderby'] = 'meta_value_num'; } else { $query['orderby'] = 'date'; } $q = new \WP_Query($query); if (!$q->have_posts()) { wp_reset_postdata(); return; } 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 } echo ''; wp_reset_postdata(); echo $args['after_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } public function form($instance): void { ?>

sanitize_text_field((string) ($new_instance['title'] ?? '')), 'count' => max(1, min(20, (int) ($new_instance['count'] ?? 6))), 'orderby' => $orderby, ]; } }