feat(links): move friend links to native WordPress links with review flow

- enable the native Links manager and drop the custom friend-link option/REST path
- add per-page link settings for the friends template
- render link categories from get_bookmarks() with search and page-content options
- add a validated public link submission endpoint with logo upload, captcha, rate limiting and duplicate checks
- create pending links for review and notify administrators by email and in-app message
- add native Links admin pending count, columns and edit notes
- cover the new submission and cleanup contracts

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
kate522andClaude Opus 5 committed 2026-11-05 19:54:33 +08:00
1 parent ef7b5939ba
commit 4c562428b4
24 files changed
+792 -273

No files matched your search

-74
View File
@@ -1,74 +0,0 @@
/**
* Jio Friends Page — 友情链接页样式
*
* @package Jio
*/
.friends-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
gap: var(--space-4);
margin-top: var(--space-6);
}
.friend-card {
display: flex;
align-items: center;
gap: var(--space-4);
padding: var(--card-padding);
background: var(--surface-1);
border: 1px solid var(--color-line);
border-radius: var(--radius-lg);
box-shadow: var(--shadow-sm);
text-decoration: none;
color: var(--color-ink-2);
transition: box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease), transform var(--dur) var(--ease);
}
.friend-card:hover {
box-shadow: var(--shadow);
border-color: var(--color-primary-soft);
transform: none;
}
.friend-card__avatar {
width: 48px;
height: 48px;
border-radius: var(--radius-avatar, 50%);
object-fit: cover;
flex-shrink: 0;
background: var(--surface-2);
}
.friend-card__info {
flex: 1;
min-width: 0;
}
.friend-card__name {
font-size: var(--text-base);
font-weight: 600;
color: var(--color-ink);
margin: 0 0 4px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.friend-card__desc {
font-size: var(--text-sm);
color: var(--color-ink-3);
margin: 0;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
line-height: var(--leading-snug);
}
/* Responsive */
@media (max-width: 640px) {
.friends-grid {
grid-template-columns: 1fr;
}
}
+11
View File
@@ -148,6 +148,17 @@
margin-bottom: 6px;
}
.jio-links-submit-status {
margin: 10px 0;
font-size: 0.92em;
}
.jio-links-logo-preview {
width: 88px;
height: 88px;
object-fit: cover;
}
/* ---- search cover ---- */
.link-page-search-cover.page-cover {
position: relative;