joseffb/wp-developer-kit

一个开发库,使在WordPress中创建内容变得更加容易。

dev-main 2024-04-09 14:46 UTC

This package is auto-updated.

Last update: 2024-09-09 15:43:22 UTC


README

欢迎来到WP开发工具包,简称WDK。WDK允许WordPress开发者轻松高效地创建网站。

WDK为开发者提供的一些功能如下:

  • 基于JSON的配置文件:通过一组配置文件创建自定义文章类型、自定义分类、菜单、页面、文章、影子分类关系、短代码和小工具。
  • 影子分类允许您链接并使用多个文章,以及这些文章的属性(例如图像、元数据、分类等)在相关文章中。也可以手动定义条件影子分类,允许您将单个分类表示拆分为多个(例如,源文章可以根据特定值在同一文章中划分为多个分类。)
  • 用于日志记录、调试和故障排除的实用函数。
  • 基于Twig的模板,用于插件、主题、子主题和后台页面。这允许您将数据层从模板层中分离出来。非常适合MVC工作流程。

入门

WDK可以作为插件安装(下载并放置到插件文件夹)或通过Composer安装。

插件安装

  • https://github.com/Joseffb/wp-development-kit下载源代码
  • 将这些文件放入您/plugins 或 /mu-plugins 文件夹中的一个名为 wp-development-kit 的文件夹中。
  • 在该目录下运行 composer install 以安装依赖文件。
  • 从WordPress网站内部激活插件。

Composer安装

  • 在您的应用程序中运行以下Composer命令
  • composer require joseffb/wp-development-kit

初始化库

  • 在您的启动文件中放置以下命令以初始化Composer自动加载器
  • require_once __DIR__ . '/vendor/autoload.php';
  • 放置以下命令以调用和初始化WDK:WDK\System::Start();

文件结构

WDK默认期望您从运行 System::Start() 的根目录开始放置WDK文件以下结构

        root  
        │
        └─── wdk
            │
            └─── configs
            │       │
            │       └─── json files
            │
            └─── views
                    │
                    └─── twig files

这些文件的位置可以通过在 'WDK_CONFIG_BASE' 和 'WDK_TEMPLATE_LOCATIONS_BASE' 中定义路径来更改。如果在同一站点中创建多个使用WDK的插件和主题,这可能是维护的好选项。

与配置文件一起工作

8种配置文件类型

WDK有8种不同的配置文件,您可以使用这些文件来构建WordPress网站

  • Fields.json - 用于在CPT上创建自定义字段。
  • Menus.json - 用于在WP菜单系统中创建菜单。
  • Posts.json - 用于将页面和文章加载到系统中。
  • Post_types.json - 用于创建自定义文章类型,以及如影子分类关系等附加功能。
  • Shortcodes.json - 用于定义短代码。
  • Sidebars.json - 用于定义侧边栏(以及哪些小工具加载到侧边栏)。
  • Taxonomies.json - 用于定义自定义分类以及如管理列和WP-GraphQL访问等额外选项。
  • Widgets.json - 用于定义小工具以及该小工具的自定义字段。

重要:配置文件必须是有效的并且符合JSON文件规范。如果它们未通过验证,WP将出现严重故障。

Post_types.json & Taxonomy.json

您最常使用的两个配置文件可能是Post_types.json和Taxonomy.json。仅使用这两个文件,您可以在几分钟内设置整个网站。每个文件都是为了模仿WordPress CPT和Taxonomy命令的参数而设计的。

大多数参数都非常直观,其中一些参数是额外的,下面将进行解释。

文章类型

额外选项

  • use_twig:用于告诉WDK使用基于Twig的模板来显示该CPT类型。模板将查找您根目录下的/wdk/views文件夹中的'single-CPTNAME.twig'。您可以使用functions文件中的update_option(wdk_template_TEMPLATENAME);来替换任何WordPress模板(例如存档)。
  • shadow_in_cpt:一个数组,用于标识应与该CPT定义关联的CPT的单数名称。阴影CPT将作为此CPT记录的分类显示。

示例JSON文件

[
  {
    "name": "Destinations", 
    ...
  },
  {
    "name": "Events",
    "args": {
        "use_twig": true,
        "shadow_in_cpt": ["destination"],
        "label": "Events",
        "labels": {
            "name": "Events",
            "singular_name": "Event",
            "menu_name": "Events",
            "parent_item_colon": "Parent Events:",
            "all_items": "All Events",
            "view_item": "View Events",
            "add_new_item": "Select Events:",
            "add_new": "Add New",
            "edit_item": "Edit Events",
            "update_item": "Update Events",
            "search_items": "Search Events",
            "not_found": "Event Not Found",
            "not_found_in_trash": "Event not found in Trash"
        },
        "description": "Conference Events",
        "supports": [
            "title",
            "thumbnail",
            "editor",
            "custom-fields",
            "comments"
        ],
        "hierarchical": false,
        "public": true,
        "show_ui": true,
        "show_in_menu": true,
        "show_in_nav_menus": true,
        "show_in_admin_bar": true,
        "menu_position": 4,
        "can_export": true,
        "has_archive": true,
        "exclude_from_search": true,
        "publicly_queryable": true
    }
  }
]
例如,'事件'类型的CPT记录现在将显示在目的地记录管理中的'事件'分类中。

分类法

额外选项

  • show_as_admin_filter:默认为true。将为您在标准WP CPT页面顶部添加一个筛选器。
  • show_admin_column:默认为true。将在受影响的CPT中添加一列。
  • show_in_graphql:(未显示)默认为true。在WP-GraphQL插件中显示CPT所需。
  • graphql_single_name:(未显示)默认为inflector类的计算出的单数名称。
  • graphql_plural_name:(未显示)默认为inflector类的计算出的复数名称。
[
  {
    "name": "Event Day",
    "post_types": [
      "event"
    ],
    "labels": [],
    "options": {
      "show_in_admin_bar": "true",
      "show_admin_column": "true",
      "show_as_admin_filter": "true"
    },
    "defaults": [
      "6/1",
      "6/2",
      "6/3",
      "6/4"
    ]
  },
  {
    "name": "Event Slot",
    "post_types": [
      "event"
    ],
    "labels": [],
    "options": {
      "show_in_admin_bar": "true",
      "show_admin_column": "true",
      "show_as_admin_filter": "true"
    },
    "defaults": [
      "9am - 10am",
      "11am - 12pm",
      "12pm - 1pm",
      "1pm - 2pm",
      "2pm - 3pm"
    ]
  }
]

使用Twig模板

WDK使用Timber插件作为在WordPress上实现Twig的一种巧妙方式,因此WDK还使用The Timber Starter Theme作为默认的备份主题(位于https://github.com/timber/starter-theme/,MIT许可证下)。

当满足两个条件时,Twig模板将被加载。

  1. process_template_TEMPLATENAME选项或post_meta设置为true(use_twig为您完成此操作)。
  2. 并且当Timber在其位置路径中找到适当的匹配模板时。

在Twig加载时,将触发一个上下文钩子(wdk_context_TEMPLATENAME),您可以使用它向模板添加数据。

add_filter('wdk_context_templatename', function($context) {
    $context['my new data'] = "something here";
    return $context;
});

变更日志

0.0.41 - 添加了Hive类以实现集中的文章管理。

0.0.2 - 修复了没有配置文件时出现的警告。

0.0.1 - 初始发布