*/ function aksrt_comments_build_context(): array { $settings = class_exists('AKSRT_Settings') ? AKSRT_Settings::get_comment_display_settings() : [ 'order' => 'desc', 'nested_depth' => 3, 'require_login' => false, 'allow_reply' => true, 'avatar_size' => 48, 'empty_text' => __('暂无评论,来做第一个评论的人吧~', 'aksrt'), ]; $default_order = (($settings['order'] ?? 'desc') === 'asc') ? 'oldest' : 'newest'; $order = isset($_GET['aksrt_comment_order']) ? sanitize_key((string) wp_unslash($_GET['aksrt_comment_order'])) : $default_order; if (!in_array($order, ['newest', 'oldest', 'hottest'], true)) { $order = 'newest'; } $avatar_size = max(24, (int) ($settings['avatar_size'] ?? 48)); $toolbar = is_array($settings['toolbar'] ?? null) ? $settings['toolbar'] : ['smilie' => true, 'code' => true, 'image' => true]; return [ 'settings' => $settings, 'comment_count' => (int) get_comments_number(), 'is_logged_in' => is_user_logged_in(), 'current_user' => wp_get_current_user(), 'require_login' => !empty($settings['require_login']), 'order' => $order, 'reverse_comments' => $order === 'newest', 'is_hottest' => $order === 'hottest', 'author_only' => isset($_GET['aksrt_author_only']) && (int) $_GET['aksrt_author_only'] === 1, 'post_author_id' => (int) get_the_author_meta('ID'), 'avatar_size' => $avatar_size, 'max_depth' => max(1, (int) ($settings['nested_depth'] ?? 3)), 'allow_reply' => !empty($settings['allow_reply']), 'empty_text' => (string) ($settings['empty_text'] ?? __('暂无评论,来做第一个评论的人吧~', 'aksrt')), 'toolbar' => $toolbar, 'upload_enabled' => !empty($toolbar['upload_img']), 'box_placeholder' => (string) ($settings['box_placeholder'] ?? __('说点什么吧...', 'aksrt')), 'submit_text' => (string) ($settings['submit_text'] ?? __('提交评论', 'aksrt')), 'title_text' => (string) ($settings['title'] ?? __('评论', 'aksrt')), 'corderby_enabled' => !empty($settings['corderby']), 'oauth_providers' => class_exists('AKSRT_OAuth') ? AKSRT_OAuth::get_instance()->get_auth_providers_data() : [], ]; } endif; if (!function_exists('aksrt_comments_apply_hottest_order')) : /** * Apply hottest-order SQL once for the current comments query. */ function aksrt_comments_apply_hottest_order(): void { static $applied = false; if ($applied) { return; } $applied = true; add_filter('comments_clauses', static function ($clauses) { global $wpdb; $clauses['join'] .= " LEFT JOIN {$wpdb->commentmeta} AS aksrt_cm ON ({$wpdb->comments}.comment_ID = aksrt_cm.comment_id AND aksrt_cm.meta_key = 'aksrt_comment_likes')"; $clauses['orderby'] = 'CAST(aksrt_cm.meta_value AS UNSIGNED) DESC, ' . $clauses['orderby']; return $clauses; }); } endif; if (!function_exists('aksrt_comments_render_signarea')) : /** * Login-required gate. * * @param array $ctx Comments context. */ function aksrt_comments_render_signarea(array $ctx): void { $oauth_providers = is_array($ctx['oauth_providers'] ?? null) ? $ctx['oauth_providers'] : []; ?>
$ctx Comments context. */ function aksrt_comments_render_form(array $ctx): void { $is_logged_in = !empty($ctx['is_logged_in']); $current_user = $ctx['current_user'] ?? null; $avatar_size = (int) $ctx['avatar_size']; $toolbar = is_array($ctx['toolbar'] ?? null) ? $ctx['toolbar'] : []; $upload_enabled = !empty($ctx['upload_enabled']); ?>
$ctx Comments context. */ function aksrt_comments_render_filter(array $ctx): void { if (empty($ctx['corderby_enabled'])) { return; } $order = (string) $ctx['order']; $author_only = !empty($ctx['author_only']); $post_author_id = (int) $ctx['post_author_id']; ?>
0) : ?>
$ctx Comments context. */ function aksrt_comments_render_list(array $ctx): void { ?>
    'ol', 'short_ping' => true, 'avatar_size' => (int) $ctx['avatar_size'], 'max_depth' => (int) $ctx['max_depth'], 'callback' => 'aksrt_comment_callback', 'reverse_top_level' => !empty($ctx['reverse_comments']), 'reverse_children' => !empty($ctx['reverse_comments']), ]); ?>
$ctx Comments context. */ function aksrt_comments_render_empty(array $ctx): void { ?>