refactor(admin): remove content-type resource/post module option
This commit is contained in:
1 parent
1af0e9b753
commit
fb1a4e110c
6 files changed
+22
-100
No files matched your search
@@ -109,8 +109,8 @@ export const MODULE_LIBRARY = [
|
|||||||
type: 'ranking',
|
type: 'ranking',
|
||||||
label: '排行榜',
|
label: '排行榜',
|
||||||
icon: 'trophy',
|
icon: 'trophy',
|
||||||
desc: '按下载量 / 阅读量 / 评论数排序',
|
desc: '按下载量 / 阅读量 / 评论数排序(普通文章)',
|
||||||
defaultConfig: { metric: 'downloads', count: 6, post_type: 'resource', title: '' },
|
defaultConfig: { metric: 'downloads', count: 6, title: '' },
|
||||||
fields: [
|
fields: [
|
||||||
{ key: 'title', type: 'text', label: '标题' },
|
{ key: 'title', type: 'text', label: '标题' },
|
||||||
{
|
{
|
||||||
@@ -121,31 +121,17 @@ export const MODULE_LIBRARY = [
|
|||||||
{ label: '评论数', value: 'comments' },
|
{ label: '评论数', value: 'comments' },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
|
||||||
key: 'post_type', type: 'select', label: '内容类型',
|
|
||||||
options: [
|
|
||||||
{ label: '资源', value: 'resource' },
|
|
||||||
{ label: '文章', value: 'post' },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{ key: 'count', type: 'number', label: '数量', min: 1, max: 20 },
|
{ key: 'count', type: 'number', label: '数量', min: 1, max: 20 },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'recent',
|
type: 'recent',
|
||||||
label: '最新内容',
|
label: '最新文章',
|
||||||
icon: 'clock',
|
icon: 'clock',
|
||||||
desc: '按时间倒序的最新文章 / 资源',
|
desc: '按时间倒序的最新文章',
|
||||||
defaultConfig: { post_type: 'post', count: 6, layout: 'card', title: '' },
|
defaultConfig: { count: 6, layout: 'card', title: '' },
|
||||||
fields: [
|
fields: [
|
||||||
{ key: 'title', type: 'text', label: '标题' },
|
{ key: 'title', type: 'text', label: '标题' },
|
||||||
{
|
|
||||||
key: 'post_type', type: 'select', label: '内容类型',
|
|
||||||
options: [
|
|
||||||
{ label: '文章', value: 'post' },
|
|
||||||
{ label: '资源', value: 'resource' },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{ key: 'count', type: 'number', label: '数量', min: 1, max: 20 },
|
{ key: 'count', type: 'number', label: '数量', min: 1, max: 20 },
|
||||||
{
|
{
|
||||||
key: 'layout', type: 'select', label: '布局',
|
key: 'layout', type: 'select', label: '布局',
|
||||||
@@ -196,7 +182,7 @@ export const MODULE_LIBRARY = [
|
|||||||
label: '热点推荐',
|
label: '热点推荐',
|
||||||
icon: 'fire',
|
icon: 'fire',
|
||||||
desc: '文章推荐列表(纯文本,仅桌面端显示)',
|
desc: '文章推荐列表(纯文本,仅桌面端显示)',
|
||||||
defaultConfig: { count: 6, post_type: 'post', source: 'auto', title: '' },
|
defaultConfig: { count: 6, source: 'auto', title: '' },
|
||||||
fields: [
|
fields: [
|
||||||
{ key: 'title', type: 'text', label: '标题' },
|
{ key: 'title', type: 'text', label: '标题' },
|
||||||
{ key: 'count', type: 'number', label: '数量', min: 3, max: 20 },
|
{ key: 'count', type: 'number', label: '数量', min: 3, max: 20 },
|
||||||
@@ -208,13 +194,6 @@ export const MODULE_LIBRARY = [
|
|||||||
{ label: '最热文章(按阅读量)', value: 'views' },
|
{ label: '最热文章(按阅读量)', value: 'views' },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
|
||||||
key: 'post_type', type: 'select', label: '内容类型',
|
|
||||||
options: [
|
|
||||||
{ label: '文章', value: 'post' },
|
|
||||||
{ label: '资源', value: 'resource' },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -478,12 +457,12 @@ export const PRESET_TEMPLATES = [
|
|||||||
{
|
{
|
||||||
key: 'resource_standard',
|
key: 'resource_standard',
|
||||||
label: '资源站标准',
|
label: '资源站标准',
|
||||||
desc: 'Hero(固定骨架)+ Tabs + 最新资源 + 下载排行',
|
desc: 'Hero(固定骨架)+ Tabs + 最新文章 + 下载排行',
|
||||||
modules: [
|
modules: [
|
||||||
{ type: 'hero', config: {} },
|
{ type: 'hero', config: {} },
|
||||||
{ type: 'tabs', config: { count: 8, layout: 'grid-cms' } },
|
{ type: 'tabs', config: { count: 8, layout: 'grid-cms' } },
|
||||||
{ type: 'recent', config: { post_type: 'resource', count: 8, layout: 'grid-cms' } },
|
{ type: 'recent', config: { count: 8, layout: 'grid-cms' } },
|
||||||
{ type: 'ranking', config: { metric: 'downloads', post_type: 'resource', count: 6 } },
|
{ type: 'ranking', config: { metric: 'downloads', count: 6 } },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -503,7 +482,7 @@ export const PRESET_TEMPLATES = [
|
|||||||
desc: 'Hero(固定骨架)+ 最新文章 + 多个分类块',
|
desc: 'Hero(固定骨架)+ 最新文章 + 多个分类块',
|
||||||
modules: [
|
modules: [
|
||||||
{ type: 'hero', config: {} },
|
{ type: 'hero', config: {} },
|
||||||
{ type: 'recent', config: { post_type: 'post', count: 6, layout: 'card' } },
|
{ type: 'recent', config: { count: 6, layout: 'card' } },
|
||||||
{ type: 'category', config: { count: 6, columns: 3, layout: 'card' } },
|
{ type: 'category', config: { count: 6, columns: 3, layout: 'card' } },
|
||||||
{ type: 'category', config: { count: 6, columns: 3, layout: 'card' } },
|
{ type: 'category', config: { count: 6, columns: 3, layout: 'card' } },
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -215,7 +215,7 @@ class AKSRT_Home_Modules {
|
|||||||
case 'mixed':
|
case 'mixed':
|
||||||
return [
|
return [
|
||||||
['type' => 'hero', 'config' => []],
|
['type' => 'hero', 'config' => []],
|
||||||
['type' => 'recent', 'config' => ['post_type' => 'post', 'count' => 6, 'layout' => 'card']],
|
['type' => 'recent', 'config' => ['count' => 6, 'layout' => 'card']],
|
||||||
['type' => 'category', 'config' => ['count' => 6, 'columns' => 3]],
|
['type' => 'category', 'config' => ['count' => 6, 'columns' => 3]],
|
||||||
['type' => 'category', 'config' => ['count' => 6, 'columns' => 3]],
|
['type' => 'category', 'config' => ['count' => 6, 'columns' => 3]],
|
||||||
];
|
];
|
||||||
@@ -225,8 +225,8 @@ class AKSRT_Home_Modules {
|
|||||||
return [
|
return [
|
||||||
['type' => 'hero', 'config' => []],
|
['type' => 'hero', 'config' => []],
|
||||||
['type' => 'tabs', 'config' => ['count' => 8]],
|
['type' => 'tabs', 'config' => ['count' => 8]],
|
||||||
['type' => 'recent', 'config' => ['post_type' => 'resource', 'count' => 8, 'layout' => 'grid-cms']],
|
['type' => 'recent', 'config' => ['count' => 8, 'layout' => 'grid-cms']],
|
||||||
['type' => 'ranking', 'config' => ['metric' => 'downloads', 'count' => 6, 'post_type' => 'resource']],
|
['type' => 'ranking', 'config' => ['metric' => 'downloads', 'count' => 6]],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -443,19 +443,6 @@ if (!function_exists('aksrt_is_resource_archive')) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Normalize homepage-module content scope.
|
|
||||||
* Values: post | resource (resource = posts marked _aksrt_is_resource).
|
|
||||||
*/
|
|
||||||
if (!function_exists('aksrt_normalize_content_scope')) {
|
|
||||||
function aksrt_normalize_content_scope($scope): string {
|
|
||||||
$scope = sanitize_key((string) $scope);
|
|
||||||
if ($scope === 'resource') {
|
|
||||||
return 'resource';
|
|
||||||
}
|
|
||||||
return 'post';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!function_exists('aksrt_detect_cloud_service')) {
|
if (!function_exists('aksrt_detect_cloud_service')) {
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
* Home Module · Hotspot 热点推荐
|
* Home Module · Hotspot 热点推荐
|
||||||
*
|
*
|
||||||
* 纯文章列表(无图片),仅桌面端显示。
|
* 纯文章列表(无图片),仅桌面端显示。
|
||||||
* config: { count, post_type: 'post'|'resource', source, title? }
|
* config: { count, source, title? }
|
||||||
*
|
*
|
||||||
* source:
|
* source:
|
||||||
* 'auto' → 优先读取 aksrt_recommend meta,不足时用最新补充
|
* 'auto' → 优先读取 aksrt_recommend meta,不足时用最新补充
|
||||||
@@ -18,9 +18,6 @@ if (!is_array($cfg)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$count = max(3, min(20, (int) ($cfg['count'] ?? 6)));
|
$count = max(3, min(20, (int) ($cfg['count'] ?? 6)));
|
||||||
$scope = function_exists('aksrt_normalize_content_scope')
|
|
||||||
? aksrt_normalize_content_scope($cfg['post_type'] ?? 'post')
|
|
||||||
: 'post';
|
|
||||||
$source = (string) ($cfg['source'] ?? 'auto');
|
$source = (string) ($cfg['source'] ?? 'auto');
|
||||||
$title = (string) ($cfg['title'] ?? '');
|
$title = (string) ($cfg['title'] ?? '');
|
||||||
|
|
||||||
@@ -28,8 +25,6 @@ if (!in_array($source, ['auto', 'recent', 'views'], true)) {
|
|||||||
$source = 'auto';
|
$source = 'auto';
|
||||||
}
|
}
|
||||||
|
|
||||||
$is_resource = $scope === 'resource';
|
|
||||||
|
|
||||||
$args = [
|
$args = [
|
||||||
'post_type' => 'post',
|
'post_type' => 'post',
|
||||||
'posts_per_page' => $count,
|
'posts_per_page' => $count,
|
||||||
@@ -37,15 +32,8 @@ $args = [
|
|||||||
'no_found_rows' => true,
|
'no_found_rows' => true,
|
||||||
];
|
];
|
||||||
|
|
||||||
$meta_query = [];
|
|
||||||
if ($is_resource) {
|
|
||||||
$meta_query[] = function_exists('aksrt_resource_meta_query')
|
|
||||||
? aksrt_resource_meta_query()
|
|
||||||
: ['key' => '_aksrt_is_resource', 'value' => '1', 'compare' => '='];
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($source === 'auto') {
|
if ($source === 'auto') {
|
||||||
$meta_query[] = [
|
$args['meta_query'] = [
|
||||||
'relation' => 'OR',
|
'relation' => 'OR',
|
||||||
['key' => 'aksrt_recommend', 'value' => '1', 'compare' => '='],
|
['key' => 'aksrt_recommend', 'value' => '1', 'compare' => '='],
|
||||||
['key' => 'aksrt_recommend', 'compare' => 'NOT EXISTS'],
|
['key' => 'aksrt_recommend', 'compare' => 'NOT EXISTS'],
|
||||||
@@ -61,20 +49,13 @@ if ($source === 'auto') {
|
|||||||
$args['order'] = 'DESC';
|
$args['order'] = 'DESC';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count($meta_query) === 1) {
|
|
||||||
$args['meta_query'] = $meta_query;
|
|
||||||
} elseif (count($meta_query) > 1) {
|
|
||||||
$args['meta_query'] = array_merge(['relation' => 'AND'], $meta_query);
|
|
||||||
}
|
|
||||||
|
|
||||||
$query = new WP_Query($args);
|
$query = new WP_Query($args);
|
||||||
if (!$query->have_posts()) {
|
if (!$query->have_posts()) {
|
||||||
wp_reset_postdata();
|
wp_reset_postdata();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$default_title = __('热点推荐', 'aksrt');
|
$display_title = $title ?: __('热点推荐', 'aksrt');
|
||||||
$display_title = $title ?: $default_title;
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<section class="home-module home-module--hotspot hotspot--desktop-only" aria-label="<?php echo esc_attr($display_title); ?>">
|
<section class="home-module home-module--hotspot hotspot--desktop-only" aria-label="<?php echo esc_attr($display_title); ?>">
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
/**
|
/**
|
||||||
* Home Module · Ranking
|
* Home Module · Ranking
|
||||||
*
|
*
|
||||||
* config: { metric: 'views|downloads|comments', count, post_type: 'post'|'resource', title? }
|
* config: { metric: 'views|downloads|comments', count, title? }
|
||||||
|
* Lists ordinary posts only (no content-type split).
|
||||||
*/
|
*/
|
||||||
defined('ABSPATH') || exit;
|
defined('ABSPATH') || exit;
|
||||||
|
|
||||||
@@ -13,30 +14,18 @@ if (!is_array($cfg)) {
|
|||||||
|
|
||||||
$metric = (string) ($cfg['metric'] ?? 'downloads');
|
$metric = (string) ($cfg['metric'] ?? 'downloads');
|
||||||
$count = max(1, min(20, (int) ($cfg['count'] ?? 6)));
|
$count = max(1, min(20, (int) ($cfg['count'] ?? 6)));
|
||||||
$scope = function_exists('aksrt_normalize_content_scope')
|
|
||||||
? aksrt_normalize_content_scope($cfg['post_type'] ?? 'resource')
|
|
||||||
: 'resource';
|
|
||||||
$title = (string) ($cfg['title'] ?? '');
|
$title = (string) ($cfg['title'] ?? '');
|
||||||
|
|
||||||
if (!in_array($metric, ['views', 'downloads', 'comments'], true)) {
|
if (!in_array($metric, ['views', 'downloads', 'comments'], true)) {
|
||||||
$metric = 'downloads';
|
$metric = 'downloads';
|
||||||
}
|
}
|
||||||
|
|
||||||
$is_resource_module = $scope === 'resource';
|
|
||||||
|
|
||||||
$args = [
|
$args = [
|
||||||
'post_type' => 'post',
|
'post_type' => 'post',
|
||||||
'posts_per_page' => $count,
|
'posts_per_page' => $count,
|
||||||
'post_status' => 'publish',
|
'post_status' => 'publish',
|
||||||
'no_found_rows' => true,
|
'no_found_rows' => true,
|
||||||
];
|
];
|
||||||
if ($is_resource_module) {
|
|
||||||
$args['meta_query'] = [
|
|
||||||
function_exists('aksrt_resource_meta_query')
|
|
||||||
? aksrt_resource_meta_query()
|
|
||||||
: ['key' => '_aksrt_is_resource', 'value' => '1', 'compare' => '='],
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
switch ($metric) {
|
switch ($metric) {
|
||||||
case 'views':
|
case 'views':
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
/**
|
/**
|
||||||
* Home Module · Recent
|
* Home Module · Recent
|
||||||
*
|
*
|
||||||
* config: { post_type: 'post'|'resource', count, layout, title? }
|
* config: { count, layout, title? }
|
||||||
|
* Lists ordinary posts only (no content-type split).
|
||||||
*/
|
*/
|
||||||
defined('ABSPATH') || exit;
|
defined('ABSPATH') || exit;
|
||||||
|
|
||||||
@@ -11,9 +12,6 @@ if (!is_array($cfg)) {
|
|||||||
$cfg = [];
|
$cfg = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope = function_exists('aksrt_normalize_content_scope')
|
|
||||||
? aksrt_normalize_content_scope($cfg['post_type'] ?? 'post')
|
|
||||||
: ((string) ($cfg['post_type'] ?? 'post') === 'resource' ? 'resource' : 'post');
|
|
||||||
$count = max(1, min(20, (int) ($cfg['count'] ?? 6)));
|
$count = max(1, min(20, (int) ($cfg['count'] ?? 6)));
|
||||||
$layout = (string) ($cfg['layout'] ?? 'card');
|
$layout = (string) ($cfg['layout'] ?? 'card');
|
||||||
$title = (string) ($cfg['title'] ?? '');
|
$title = (string) ($cfg['title'] ?? '');
|
||||||
@@ -22,8 +20,6 @@ if (!in_array($layout, ['card', 'list', 'masonry', 'grid-cms'], true)) {
|
|||||||
$layout = 'card';
|
$layout = 'card';
|
||||||
}
|
}
|
||||||
|
|
||||||
$is_resource_module = $scope === 'resource';
|
|
||||||
|
|
||||||
$args = [
|
$args = [
|
||||||
'post_type' => 'post',
|
'post_type' => 'post',
|
||||||
'posts_per_page' => $count,
|
'posts_per_page' => $count,
|
||||||
@@ -32,13 +28,6 @@ $args = [
|
|||||||
'orderby' => 'date',
|
'orderby' => 'date',
|
||||||
'order' => 'DESC',
|
'order' => 'DESC',
|
||||||
];
|
];
|
||||||
if ($is_resource_module) {
|
|
||||||
$args['meta_query'] = [
|
|
||||||
function_exists('aksrt_resource_meta_query')
|
|
||||||
? aksrt_resource_meta_query()
|
|
||||||
: ['key' => '_aksrt_is_resource', 'value' => '1', 'compare' => '='],
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
$query = new WP_Query($args);
|
$query = new WP_Query($args);
|
||||||
if (!$query->have_posts()) {
|
if (!$query->have_posts()) {
|
||||||
@@ -46,11 +35,8 @@ if (!$query->have_posts()) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$default_title = $is_resource_module ? __('最新资源', 'aksrt') : __('最新文章', 'aksrt');
|
$display_title = $title ?: __('最新文章', 'aksrt');
|
||||||
$display_title = $title ?: $default_title;
|
$archive_link = get_permalink(get_option('page_for_posts'));
|
||||||
$archive_link = $is_resource_module
|
|
||||||
? (function_exists('aksrt_resource_archive_url') ? aksrt_resource_archive_url() : home_url('/resources/'))
|
|
||||||
: get_permalink(get_option('page_for_posts'));
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<section class="home-module home-module--recent container" aria-label="<?php echo esc_attr($display_title); ?>">
|
<section class="home-module home-module--recent container" aria-label="<?php echo esc_attr($display_title); ?>">
|
||||||
|
|||||||
Reference in new issue
Block a user