Files
wordpress-theme-aksrt/templates/parts/user-home/panel-follow.php
T
kate522andClaude Fable 5 d40906b4a3 feat(single): align author bar follow and reward actions with the site flows
- guests get the sign-in trigger instead of a redirect to the login page,
  for both follow and wallet reward controls
- follow requests swap the label for an inline loader and block a second
  submit; the followed state uses the .actived hook
- follower counts sync through data-follow-count on the user homepage
  (the previous selector matched nothing) and only for the viewed profile
- reward button uses the secondary action colour; the reward template is
  only rendered for signed-in visitors
- drop the unused author-hero aria-disabled rule and stale wording in the
  touched comments

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-11-04 13:34:34 +08:00

77 lines
3.4 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Public user home — follow tab panel body (social following/followers).
*
* 粉丝/关注用户列表:子切换「粉丝 | 关注」居中文字链接,
* 列表项走 jio_author_minicard(.author-minicard 三列 inline-block 卡片流)。
*
* Rendered inside the #panel-follow wrapper on the public user home and via
* the jio/v1 user-home panel REST fragment. Sub-tabs and pagination are
* button-driven ([data-uh-sub] / [data-uh-page]) and never touch the URL.
*
* @package Jio
*/
defined('ABSPATH') || exit;
$args = is_array($args ?? null) ? $args : [];
extract($args, EXTR_SKIP); // phpcs:ignore WordPress.PHP.DontExtract.extract_extract
$follow_page = max(1, (int) ($follow_page ?? 1));
$follow_sub = in_array($follow_sub ?? 'followers', ['following', 'followers'], true) ? $follow_sub : 'followers';
if (!empty($placeholder_only)) :
?>
<?php echo jio_get_user_home_follow_placeholder(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- 固定骨架由本主题 helper 输出。 ?>
<div class="uh-panel-load-error" role="alert">
<span><?php esc_html_e('加载失败,请重试', 'jio'); ?></span>
<button type="button" data-uh-retry><?php esc_html_e('重试', 'jio'); ?></button>
</div>
<?php
return;
endif;
$follow_instance = class_exists('\Jio\User\Follow') ? \Jio\User\Follow::get_instance() : null;
$following_count = $follow_instance ? (int) $follow_instance->get_following_count((int) $user_id) : 0;
$follower_count = $follow_instance ? (int) $follow_instance->get_follower_count((int) $user_id) : 0;
$list = ['items' => [], 'total' => 0, 'total_pages' => 1];
if ($follow_instance) {
$list = $follow_sub === 'followers'
? $follow_instance->get_followers((int) $user_id, $follow_page, (int) $per_page)
: $follow_instance->get_following((int) $user_id, $follow_page, (int) $per_page);
}
$items = is_array($list['items'] ?? null) ? $list['items'] : [];
$total_pages = max(1, (int) ($list['total_pages'] ?? 1));
?>
<ul class="uh-follow__subtabs list-inline splitters">
<li>
<button type="button" class="uh-follow__subtab<?php echo $follow_sub === 'followers' ? ' is-active focus-color' : ' muted-color'; ?>" data-uh-sub="followers">
<?php esc_html_e('粉丝', 'jio'); ?>
<span class="uh-follow__subtab-count" data-follow-count="followers"><?php echo esc_html((string) $follower_count); ?></span>
</button>
</li>
<li>
<button type="button" class="uh-follow__subtab<?php echo $follow_sub === 'following' ? ' is-active focus-color' : ' muted-color'; ?>" data-uh-sub="following">
<?php esc_html_e('关注', 'jio'); ?>
<span class="uh-follow__subtab-count"><?php echo esc_html((string) $following_count); ?></span>
</button>
</li>
</ul>
<?php if (!empty($items)) : ?>
<div class="uh-follow__list">
<?php foreach ($items as $row) :
echo jio_author_minicard((int) ($row['user_id'] ?? 0)); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
endforeach; ?>
</div>
<?php jio_render_user_home_pagination($total_pages, $follow_page); ?>
<?php else : ?>
<?php
$empty_msg = $follow_sub === 'followers'
? __('暂无粉丝', 'jio')
: __('暂未关注任何人', 'jio');
jio_render_profile_empty($svg_empty_follow ?? $svg_empty_post ?? '', $empty_msg);
?>
<?php endif; ?>
<?php echo jio_get_user_home_follow_placeholder(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- 固定骨架由本主题 helper 输出。 ?>