feat(widgets): simplify locations and paid sidebar
Remove deprecated widget locations and widgets, standardize sidebar labels, and render a compact paid-post purchase card in the article sidebar.
This commit is contained in:
1 parent
51d2ab3aa7
commit
bd7d3046a5
43 files changed
+294
-3581
No files matched your search
@@ -19,11 +19,11 @@ function aksrt_unregister_default_widgets(): void {
|
||||
unregister_widget('WP_Widget_Pages');
|
||||
unregister_widget('WP_Widget_Search');
|
||||
unregister_widget('WP_Widget_Calendar');
|
||||
unregister_widget('WP_Nav_Menu_Widget');
|
||||
}
|
||||
add_action('widgets_init', 'aksrt_unregister_default_widgets', 1);
|
||||
|
||||
function aksrt_register_widgets() {
|
||||
register_widget('\AKSRT\Widgets\AboutWidget');
|
||||
register_widget('\AKSRT\Widgets\CategoriesWidget');
|
||||
register_widget('\AKSRT\Widgets\TagCloudWidget');
|
||||
register_widget('\AKSRT\Widgets\HotPostsWidget');
|
||||
@@ -56,43 +56,28 @@ function aksrt_register_widgets() {
|
||||
// 视频播放器
|
||||
register_widget('\AKSRT\Widgets\WidgetVideoPlayer');
|
||||
|
||||
// 语言切换器
|
||||
register_widget('\AKSRT\Widgets\WidgetLangSwitch');
|
||||
|
||||
// 一言轮播
|
||||
register_widget('\AKSRT\Widgets\WidgetYiyan');
|
||||
|
||||
// 文章目录树(zibll posts_navs)
|
||||
register_widget('\AKSRT\Widgets\WidgetPostsNavs');
|
||||
// 幻灯片
|
||||
register_widget('\AKSRT\Widgets\WidgetSlider');
|
||||
|
||||
// 幻灯片
|
||||
register_widget('\AKSRT\Widgets\WidgetSlider');
|
||||
|
||||
// zibll more widgets batch
|
||||
register_widget('\AKSRT\Widgets\WidgetPartnersScroll');
|
||||
register_widget('\AKSRT\Widgets\WidgetIframe');
|
||||
register_widget('\AKSRT\Widgets\WidgetComboInfo');
|
||||
register_widget('\AKSRT\Widgets\WidgetTextTitle');
|
||||
register_widget('\AKSRT\Widgets\WidgetUserLists');
|
||||
|
||||
register_widget('\AKSRT\Widgets\WidgetPricingPlans');
|
||||
register_widget('\AKSRT\Widgets\WidgetFaq');
|
||||
register_widget('\AKSRT\Widgets\WidgetStats');
|
||||
register_widget('\AKSRT\Widgets\WidgetReviews');
|
||||
register_widget('\AKSRT\Widgets\WidgetHighlights');
|
||||
register_widget('\AKSRT\Widgets\WidgetFeatureIntro');
|
||||
register_widget('\AKSRT\Widgets\WidgetTermCards');
|
||||
register_widget('\AKSRT\Widgets\WidgetPaidPosts');
|
||||
register_widget('\AKSRT\Widgets\WidgetPostPayBox');
|
||||
register_widget('\AKSRT\Widgets\WidgetAuthorCard');
|
||||
register_widget('\AKSRT\Widgets\WidgetOnelinePosts');
|
||||
register_widget('\AKSRT\Widgets\WidgetTiltCases');
|
||||
register_widget('\AKSRT\Widgets\WidgetMainPosts');
|
||||
register_widget('\AKSRT\Widgets\WidgetTermAggregation');
|
||||
register_widget('\AKSRT\Widgets\WidgetIconCoverCards');
|
||||
register_widget('\AKSRT\Widgets\WidgetBookmarkLinks');
|
||||
|
||||
aksrt_maybe_repair_sidebar_blog_widgets();
|
||||
// 其余通用小工具
|
||||
register_widget('\AKSRT\Widgets\WidgetIframe');
|
||||
register_widget('\AKSRT\Widgets\WidgetComboInfo');
|
||||
register_widget('\AKSRT\Widgets\WidgetTextTitle');
|
||||
register_widget('\AKSRT\Widgets\WidgetUserLists');
|
||||
register_widget('\AKSRT\Widgets\WidgetFaq');
|
||||
register_widget('\AKSRT\Widgets\WidgetHighlights');
|
||||
register_widget('\AKSRT\Widgets\WidgetTermCards');
|
||||
register_widget('\AKSRT\Widgets\WidgetPostPayBox');
|
||||
register_widget('\AKSRT\Widgets\WidgetAuthorCard');
|
||||
register_widget('\AKSRT\Widgets\WidgetOnelinePosts');
|
||||
register_widget('\AKSRT\Widgets\WidgetTiltCases');
|
||||
register_widget('\AKSRT\Widgets\WidgetMainPosts');
|
||||
register_widget('\AKSRT\Widgets\WidgetTermAggregation');
|
||||
register_widget('\AKSRT\Widgets\WidgetIconCoverCards');
|
||||
register_widget('\AKSRT\Widgets\WidgetBookmarkLinks');
|
||||
}
|
||||
add_action('widgets_init', 'aksrt_register_widgets');
|
||||
|
||||
@@ -105,7 +90,6 @@ if (!function_exists('aksrt_widget_sidebar_area_ids')) {
|
||||
function aksrt_widget_sidebar_area_ids(): array {
|
||||
return [
|
||||
'home_sidebar',
|
||||
'sidebar-blog',
|
||||
'sidebar-article',
|
||||
'all_sidebar_top',
|
||||
'all_sidebar_bottom',
|
||||
@@ -192,7 +176,6 @@ if (!function_exists('aksrt_widget_allowed_sidebars')) {
|
||||
*/
|
||||
function aksrt_widget_allowed_sidebars(string $widget_base_id): array {
|
||||
$sidebar_only = [
|
||||
'aksrt_about',
|
||||
'aksrt_categories',
|
||||
'aksrt_tag_cloud',
|
||||
'aksrt_hot_posts',
|
||||
@@ -221,6 +204,10 @@ if (!function_exists('aksrt_widget_allowed_sidebars')) {
|
||||
)));
|
||||
}
|
||||
|
||||
if ($widget_base_id === 'aksrt_post_pay_box') {
|
||||
return ['sidebar-article'];
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
}
|
||||
@@ -280,7 +267,7 @@ if (!function_exists('aksrt_widget_render_location_help')) {
|
||||
*/
|
||||
function aksrt_widget_render_location_help(string $scope): void {
|
||||
$messages = [
|
||||
'sidebar' => __('仅限侧栏区域:首页侧栏、博客侧栏、文章侧栏、全站侧栏、分类/标签/搜索侧栏。', 'aksrt'),
|
||||
'sidebar' => __('仅限侧栏区域:首页侧栏、文章页侧边栏、全站侧栏、分类/标签/搜索侧栏。', 'aksrt'),
|
||||
'homepage' => __('仅限首页挂载区域:首页顶部/底部全宽、首页内容上方/下方。', 'aksrt'),
|
||||
'hybrid' => __('支持侧栏、首页和归档页挂载区域。', 'aksrt'),
|
||||
'archive' => __('仅限归档页挂载区域:分类页、标签页、搜索页的顶部/底部/侧栏。', 'aksrt'),
|
||||
@@ -412,92 +399,6 @@ if (!function_exists('aksrt_filter_widget_sidebar_assignments')) {
|
||||
}
|
||||
add_filter('pre_update_option_sidebars_widgets', 'aksrt_filter_widget_sidebar_assignments', 10, 2);
|
||||
|
||||
/**
|
||||
* Ensure widget instance config exists.
|
||||
*/
|
||||
function aksrt_ensure_widget_instance(string $option_name, int $number, array $defaults): void {
|
||||
$instances = get_option($option_name, []);
|
||||
|
||||
if (!is_array($instances)) {
|
||||
$instances = [];
|
||||
}
|
||||
|
||||
if (!isset($instances['_multiwidget'])) {
|
||||
$instances['_multiwidget'] = 1;
|
||||
}
|
||||
|
||||
if (empty($instances[$number]) || !is_array($instances[$number])) {
|
||||
$instances[$number] = $defaults;
|
||||
update_option($option_name, $instances);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Repair the sidebar-blog structure and seed default sidebar widgets on first install.
|
||||
*/
|
||||
function aksrt_maybe_repair_sidebar_blog_widgets(): void {
|
||||
$sidebars = get_option('sidebars_widgets', []);
|
||||
$seeded = (bool) get_option('aksrt_sidebar_blog_seeded', false);
|
||||
|
||||
if (!is_array($sidebars)) {
|
||||
$sidebars = [];
|
||||
}
|
||||
|
||||
$current = $sidebars['sidebar-blog'] ?? null;
|
||||
$needs_repair = false;
|
||||
$normalized = [];
|
||||
|
||||
if (is_array($current)) {
|
||||
foreach ($current as $item) {
|
||||
if (is_array($item)) {
|
||||
$needs_repair = true;
|
||||
}
|
||||
|
||||
if (is_string($item) && $item !== '') {
|
||||
$normalized[] = $item;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($needs_repair) {
|
||||
$sidebars['sidebar-blog'] = array_values($normalized);
|
||||
update_option('sidebars_widgets', $sidebars);
|
||||
update_option('aksrt_sidebar_blog_seeded', true);
|
||||
return;
|
||||
}
|
||||
|
||||
if ($current !== null) {
|
||||
if (!$seeded) {
|
||||
update_option('aksrt_sidebar_blog_seeded', true);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if ($seeded) {
|
||||
return;
|
||||
}
|
||||
|
||||
aksrt_ensure_widget_instance('widget_aksrt_about', 2, [
|
||||
'title' => '',
|
||||
]);
|
||||
aksrt_ensure_widget_instance('widget_aksrt_categories', 2, [
|
||||
'title' => __('分类目录', 'aksrt'),
|
||||
'count' => 8,
|
||||
]);
|
||||
aksrt_ensure_widget_instance('widget_aksrt_tag_cloud', 2, [
|
||||
'title' => __('标签云', 'aksrt'),
|
||||
'count' => 15,
|
||||
]);
|
||||
|
||||
$sidebars['sidebar-blog'] = [
|
||||
'aksrt_about-2',
|
||||
'aksrt_categories-2',
|
||||
'aksrt_tag_cloud-2',
|
||||
];
|
||||
update_option('sidebars_widgets', $sidebars);
|
||||
update_option('aksrt_sidebar_blog_seeded', true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register a block editor collection for AKSRT widgets.
|
||||
*/
|
||||
@@ -527,7 +428,6 @@ add_action('enqueue_block_editor_assets', function () {
|
||||
*/
|
||||
add_filter('block_type_metadata', function ($metadata) {
|
||||
$aksrt_widgets = [
|
||||
'aksrt_about',
|
||||
'aksrt_categories',
|
||||
'aksrt_tag_cloud',
|
||||
];
|
||||
@@ -544,7 +444,6 @@ add_filter('block_type_metadata', function ($metadata) {
|
||||
*/
|
||||
add_action('in_widget_form', function (WP_Widget $widget): void {
|
||||
$map = [
|
||||
'aksrt_about' => 'sidebar',
|
||||
'aksrt_categories' => 'sidebar',
|
||||
'aksrt_tag_cloud' => 'sidebar',
|
||||
'aksrt_hot_posts' => 'sidebar',
|
||||
|
||||
Reference in new issue
Block a user