grrr-amsterdam/simply-static-deploy

此包已废弃且不再维护。未建议替代包。

轻松将静态WordPress站点部署到AWS S3存储桶


README

此存储库已存档

❗️ GRRR不再维护此插件。

我们建议使用Simply Static插件的Pro计划。当我们开始此插件时,它解决了Simply Static中缺少部署功能的问题。从那时起,该插件已更新,Pro计划正好提供了我们缺少的功能。
GRRR向Simply Static插件贡献了代码和功能,并很高兴看到它的发展。
我们建议您查看,这绝对物有所值。

感谢所有对此插件感兴趣的人!
如果您喜欢使用此插件或在任何方面受到它的启发,也许您想关注我们的博客,在那里我们分享我们的工作和在过程中学到的东西:grrr.tech

轻松将静态站点部署到AWS S3存储桶

  • 利用优秀的Simply Static插件生成静态站点。
  • 添加到S3兼容存储(AWS S3、DigitalOcean Spaces等)的部署。
  • 添加可选的CloudFront CDN失效步骤。
  • 可以通过简单的用户界面或编程方式触发步骤。
  • 能够生成和部署单个页面,包括递归选项
  • 可使用钩子和动作进行自定义。

GRRR用❤️开发

生成和部署用户界面

Screenshot of Simply Static Deploy plugin interface for WordPress

单页/帖子部署用户界面

Screenshot of plugin interface for deploying a single page

最低要求

此插件需要

安装

此插件需要使用Composer安装。

确保您在composer.json中配置了正确的安装程序路径。必须在要求包之前完成此操作

"extra": {
  "installer-paths": {
    "wp-content/plugins/{$name}/": ["type:wordpress-plugin"]
  }
}

通过Composer安装

$ composer require grrr-amsterdam/simply-static-deploy

如果您项目中尚未使用Composer,请确保包含Composer自动加载器。一个合适的位置是在您的wp-config.php文件中。

/** Sets up WordPress vars and included files. */
require_once ABSPATH . 'vendor/autoload.php'; # ‹— add this
require_once ABSPATH . 'wp-settings.php';

用法

首先在WordPress配置中定义SIMPLY_STATIC_DEPLOY_CONFIG

define('SIMPLY_STATIC_DEPLOY_CONFIG', [
    'aws' => [
        'key' => '...', # AWS access key
        'secret' => '...', # AWS secret key
        'region' => '...', # AWS region
        'bucket' => '...', # S3 bucket
        'bucket_acl' => '...', # S3 bucket ACL (optional, defaults to `public-read`)
        'distribution' => '...', # CloudFront distribution ID (optional, step is skipped when empty)
        'endpoint' => '...', # For usage with providers other than AWS (optional)
    ],
    'url' => '...', # Website url (used for displaying url after deploy is finished)
]);

然后通过管理界面配置Simply Static插件。正确的设置中最重要的是

  • 交付方式:设置为本地目录(文件同步到S3,zip无法使用)

其他需要注意的设置

  • 附加URL:添加插件无法找到的任何URL
  • 附加文件和目录:添加额外的目录(例如前端资产)
  • 要排除的URL:例如上传文件夹(但在运行时卸载上传时)

如果一切配置正确,请在部署选项卡中点击生成 & 部署

文档

功能

单个帖子部署

页面/帖子带有单个部署按钮,因此可以生成和部署单个页面,请参阅单个页面/帖子部署用户界面。

单个递归部署

通过检查递归选项,单个帖子或页面的部署也可以递归地进行,请参见单个页面/帖子部署用户界面中的复选框。当选中“递归”时,包含当前页面/帖子URL的所有页面/帖子也将生成和部署。

可用的过滤器和方法

可用的过滤器可修改传递给插件设置和数据

可用的方法以调用或对其实施操作

过滤器

调整附加文件

修改来自“附加文件和目录”选项的条目。默认情况下,所有路径都通过realpath临时解析为绝对路径,以确保符号链接得到解决。作为参数传递的是选项中未修改的文件数组。

add_filter('simply_static_deploy_additional_files', function (array $files) {
    # Modify files, and possibly resolve paths with `realpath`.
    return $files;
});

注意:在生成静态网站期间,“additional_files”设置会更新。完成后将恢复。

调整单个部署的附加文件

在执行单个部署时,只有给定的页面/帖子将被生成,包括在Simply Static的“附加文件”设置中给出的文件。您可以通过simply_static_deploy_single_additional_files过滤器更改这些附加文件进行单个部署。它接受两个参数:第一个是一个文件名数组,第二个是Simply Static选项实例。

调整附加URL

修改“附加URL”选项中的条目。这可以用来添加Simple Static无法找到的页面(不在网站地图中,被密码排除,有noindex等)。未修改的URL数组作为参数传递。

add_filter('simply_static_deploy_additional_urls', function (array $urls) {
    # Modify urls, for example by adding missing pages.
    return $urls;
});

注意:在生成静态网站期间,additional_urls设置会更新。完成时会恢复。

修改递归排除项

此过滤器添加了自定义可排除URL设置的选项。例如,当你想忽略包含递归父URL的URL的排除时,这很有用。

add_filter('simply_static_deploy_recursive_excludable', function (
    $excludable,
    string $staticPageUrl,
    string $recursiveUrl
) {
    # Modify excludable url logic, for example ignore excludeable url setting when current page contains the recursiveUrl
    return $excludable;
});

操作

处理错误

从插件调用,并接收一个解释错误的WP_Error对象。你可以决定如何处理错误,例如使用所选的服务记录错误。

add_action('simply_static_deploy_error', function (\WP_Error $error) {
    # Handle the error.
});
完成静态部署任务

所有部署任务完成后,这将被触发。回调函数中你将得到的第一个也是唯一的参数是Simply Static选项实例。

add_action('simply_static_deploy_complete' , function (\Simply_Static\Options $options) {
    // Finished static deploy job.
});
修改生成的文件

当Simply Static完成生成静态网站时调用。这允许你在部署之前修改生成的文件。静态网站目录作为参数传递。

add_action('simply_static_deploy_modify_generated_files', function (
    string $directory
) {
    # Modify generated files, like renaming or moving them.
});
安排部署

安排一个部署事件。

参数

  • 时间:应是一个简单的字符串时间,它会被自动转换为配置的WordPress时区中的UNIX时间戳。
  • 间隔:接受值为hourlytwicedailydaily。可以通过cron_schedules扩展。
do_action('simply_static_deploy_schedule', '12:00', 'daily');

注意:确保WP-Cron定期被调用。你可以通过禁用默认的WP-Cron机制并切换到通过专门的cronjob调用它来实现。

要禁用默认的WP–Cron(通常在用户访问页面时调用),请将以下内容添加到你的WordPress配置中

define('DISABLE_WP_CRON', true);

创建一个调用WordPress WP-Cron的cronjob。将其设置为每5分钟是一个好的默认值。例如,通过Linux机器上的crontab -e执行

*/5 * * * * curl https://example.com/wp/wp-cron.php?doing-cron > /dev/null 2>&1

常见问题

Fatal error: Uncaught Error: Class 'Grrr\SimplyStaticDeploy\SimplyStaticDeploy' not found

检查安装说明,并在你的项目中要求Composer自动加载器。