vinckla/wordplate

WordPlate 模板

安装量: 3,237

依赖者: 0

建议者: 0

安全: 0

星标: 2,109

关注者: 52

分叉: 155

开放问题: 0

类型:项目


README

WordPlate

WordPlate

WordPlate 是一个 WordPress 模板,使用 Composer 构建,并设计有合理的默认值。

Build Status Monthly Downloads Latest Version

特性

  • WordPress + Composer = ❤️

    可以使用 Composer 轻松安装和更新 WordPress。要更新 WordPress,只需运行 composer update 命令。

  • 环境文件

    类似于 Laravel,WordPlate 将环境变量,如数据库凭证,存储在 .env 文件中。

  • WordPress Packagist

    WordPress Packagist 允许通过 Composer 管理WordPress 插件和主题。

  • 必须使用的插件

    不用担心客户禁用插件;默认启用了必须使用的插件

  • Vite.js

    使用 Vite,您可以快速设置并开始构建和压缩您的 CSS 和 JavaScript。

  • 调试

    集成了熟悉的调试辅助函数,例如 dump()dd()

  • 清洁界面

    增强 WordPress 控制台并改善客户的用户体验

  • 安全

    我们已用现代且安全的 bcrypt 替换了 WordPress 过时且不安全的基于 MD5 的密码散列,使用了roots/wp-password-bcrypt 包。

安装

在使用 WordPlate 之前,请确保您已在计算机上安装了 PHP 8.2 和 MySQL 8.0。您还需要在计算机上安装 Composer,这是 PHP 的包管理器。

要安装 WordPlate,请在终端中输入以下命令

composer create-project --prefer-dist vinkla/wordplate example-app

安装 WordPlate 后,您需要更新 .env 文件中的数据库凭证。此文件位于项目根目录中。打开文件并使用您的数据库凭证更新以下行

DB_NAME=database
DB_USER=username
DB_PASSWORD=password

要运行您的 WordPlate 应用程序,您可以使用 PHP 内置的 web 服务器来提供服务。打开终端,导航到项目中的 public 目录。然后,输入以下命令

php -S 127.0.0.1:8000 -t public/

最后,打开您的网络浏览器,访问以下 URL 以查看您的 WordPlate 应用程序

配置

公共目录

安装 WordPlate 后,您需要配置 web 服务器文档或 web 根为 public 目录。这是应用程序的主要入口点 index.php 所在的位置。

通过将 public 目录设置为 web 服务器的文档根,您确保所有 HTTP 请求都通过前端控制器路由,该控制器处理请求并返回适当的响应。

此配置有助于提高应用程序的安全性和性能,通过防止直接访问 public 目录之外的文件。

环境配置

WordPlate使得根据应用程序运行的环境轻松管理不同的配置值。例如,您可能需要在使用生产服务器时使用与本地不同的数据库。

为了实现这一点,WordPlate使用了vlucas/phpdotenv PHP包。当您安装WordPlate时,一个.env.example文件将被包含在您的应用程序根目录中。如果您通过Composer安装了WordPlate,该文件将自动重命名为.env。否则,您应该手动重命名该文件。

请注意,您的.env文件不应该提交到您的应用程序的源代码控制。这是因为每个使用您的应用程序的开发者或服务器可能需要不同的环境配置。此外,如果入侵者访问了您的存储库,将.env文件提交到源代码控制将是一个安全风险,因为任何敏感凭证都可能被暴露。

要了解更多关于在WordPlate中管理环境变量的信息,您可以参考Laravel关于此主题的文档

Salt 密钥

在环境文件中添加盐密钥非常重要。这些密钥用于加密敏感数据,如用户会话,有助于确保您应用程序的安全性。

如果您没有设置盐密钥,您的用户会话和其他加密数据可能会受到攻击。为了更容易地生成安全的盐密钥,我们创建了一个盐密钥生成器,您可以使用它。如果您尚未这样做,请将.env.example文件复制到一个名为.env的新文件中。然后访问生成器并将随机生成的密钥复制到您的.env文件中。

插件

WordPress Packagist

WordPlate包含与WordPress Packagist的集成,这是WordPress插件和主题目录的Composer存储库的镜像。通过此集成,您可以使用Composer安装和管理插件。

要安装插件,请使用wpackagist-plugin作为供应商名称,并将插件slug作为包名称。例如,要安装clean-image-filenames插件,您将使用以下命令

composer require wpackagist-plugin/clean-image-filenames

已安装的包将位于public/plugins目录中。

以下是一个可能的composer.json文件示例

"require": {
    "wpackagist-plugin/clean-image-filenames": "^1.5"
}

有关更多信息示例,请访问WordPress Packagist网站

必须使用的插件

必须使用插件(也称为mu-plugin)是WordPress插件的一种,它被安装在内部内容文件夹的特殊目录中。这些插件将在WordPress安装中的所有站点上自动启用。

要将插件安装到mu-plugins目录中,请将插件名称添加到您的composer.json文件的installer-paths

"installer-paths": {
    "public/mu-plugins/{$name}": [
        "type:wordpress-muplugin",
        "wpackagist-plugin/clean-image-filenames",
    ]
}

要安装插件,请使用wpackagist-plugin作为供应商名称,并将插件slug作为包名称

composer require wpackagist-plugin/clean-image-filenames

插件将被安装到public/mu-plugins目录中。

有关必须使用插件自动加载器的更多信息,请参阅Bedrock文档

包含的插件

头痛

这是一个易于吞咽的止痛药插件,用于WordPress。它删除了您迫不及待想要删除的许多默认WordPress功能。它删除了如feed、版本号和emoji之类的元标签。

清洁图像文件名

插件在将文件上传到媒体库时会自动转换文件名中的语言重音字符。字符被转换成浏览器和服务器友好的非重音字符。

  • Räksmörgås.jpgraksmorgas.jpg
  • Æblegrød_FTW!.gifaeblegrod-ftw.gif
  • Château de Ferrières.pngchateau-de-ferrieres.png

Vite.js

Vite 是一款构建工具,为现代网页项目提供更快、更精简的开发体验。它具有合理的默认设置,并通过其插件和 JavaScript API(支持完全类型支持)高度可扩展。

# Start the dev server...
npm run dev

# Build for production...
npm run build

了解更多关于 Vite 后端集成的信息。

邮件

要为 WordPlate 应用程序发送电子邮件设置自定义 SMTP 凭据,您需要在 .env 文件中配置所需的环境变量。

MAIL_HOST=127.0.0.1
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="Example"

如果您正在使用 Mailhog 或 Mailpit 等本地电子邮件服务,您需要通过将 MAIL_ENCRYPTION 环境变量设置为 null 来禁用加密。

常见问题解答

我可以在环境文件中添加 WordPress 常量吗?

通过在 WordPlate 应用程序创建后更新 public/wp-config.php 文件,这是可能的。

define('WP_DISABLE_FATAL_ERROR_HANDLER', env('WP_DISABLE_FATAL_ERROR_HANDLER', false));

+define('WP_ALLOW_MULTISITE', env('WP_ALLOW_MULTISITE', true));

然后,您可以将常量添加到 .env 文件中。

WP_DEFAULT_THEME=wordplate
+WP_ALLOW_MULTISITE=true
我可以禁用 WP-Cron 并设置手动 cron 作业吗?

WordPlate 允许您通过 DISABLE_WP_CRON 环境变量禁用内部 WordPress cron 系统

DISABLE_WP_CRON=true

如果您启用此设置并禁用 WordPress cron,建议您手动设置 cron 作业。您需要在 crontab 文件中添加以下内容

*/5 * * * * curl https://example.com/wp/wp-cron.php
我可以使用 Composer 安装语言包吗?

如果您想使用 Composer 安装语言包,我们建议您查看 WP Languages 项目。以下是安装 WordPress 瑞典语言包的 composer.json 文件示例。

{
    "require": {
        "koodimonni-language/core-sv_se": "*",
    },
    "repositories": [
        {
            "type": "composer",
            "url": "https://wp-languages.github.io",
            "only": [
                "koodimonni-language/*"
            ]
        }
    ],
    "config": {
        "allow-plugins": {
            "koodimonni/composer-dropin-installer": true
        },
    },
    "extra": {
        "dropin-paths": {
            "public/languages/": [
                "vendor:koodimonni-language"
            ]
        }
    }
}
我可以重命名公共目录吗?

使用新的公共目录路径更新您的 .gitignorecomposer.json.vite.config.jswp-cli.yml 文件。然后,在项目根目录中运行 composer update

我可以重命名 WordPress 目录吗?

默认情况下,WordPlate 将 WordPress 放在 public/wordpress。如果您想更改此设置,您需要完成一些步骤。假设您想将默认 WordPress 位置更改为 public/wp

  1. 在您的 composer.json 文件中更新 wordpress-install-dir 路径。

  2. wordplate/public/.gitignore 中将 wordpress 更新为 wp

  3. 更新 public/index.php 文件的最后一行

    require __DIR__.'/wp/wp-blog-header.php';
  4. .env 文件中将 WP_DIR 环境变量更新为 wp

  5. 如果您使用 WP-CLI,更新 wp-cli.yml 文件中的路径为 public/wp

  6. 如果存在,则删除 public/wordpress 目录,然后运行 composer update

我可以重命名主题目录吗?

对于大多数应用程序,您可能可以保留主题目录不变。如果您想将 wordplate 主题重命名为其他名称,您还需要在 .env 文件中更新 WP_DEFAULT_THEME 环境变量。

我可以与 Laravel Herd 或 Valet 一起使用 WordPlate 吗?

如果您正在使用 Laravel Herd 或 Valet 与 WordPlate 一起使用,您可以使用我们的 自定义驱动程序

<?php

namespace Valet\Drivers\Custom;

use Valet\Drivers\BasicValetDriver;

class WordPlateValetDriver extends BasicValetDriver
{
    public function serves(string $sitePath, string $siteName, string $uri): bool
    {
        return is_dir($sitePath . '/public/wordpress');
    }

    public function isStaticFile(string $sitePath, string $siteName, string $url)
    {
        $staticFilePath = $sitePath . '/public' . $url;

        if ($this->isActualFile($staticFilePath)) {
            return $staticFilePath;
        }

        return false;
    }

    public function frontControllerPath(string $sitePath, string $siteName, string $uri): ?string
    {
        return parent::frontControllerPath(
            $sitePath . '/public',
            $siteName,
            $this->forceTrailingSlash($uri)
        );
    }

    private function forceTrailingSlash(string $uri)
    {
        if (substr($uri, -1 * strlen('/wordpress/wp-admin')) === '/wordpress/wp-admin') {
            header('Location: ' . $uri . '/');
            exit;
        }

        return $uri;
    }
}
我可以与 Tinkerwell 一起使用 WordPlate 吗?

如果您正在使用 Tinkerwell 与 WordPlate 一起使用,您可以使用我们的 自定义驱动程序

<?php

final class WordPlateTinkerwellDriver extends WordpressTinkerwellDriver
{
    public function canBootstrap($projectPath)
    {
        return file_exists($projectPath . '/public/wordpress/wp-load.php');
    }

    public function bootstrap($projectPath)
    {
        require $projectPath . '/public/wordpress/wp-load.php';
    }

    public function appVersion()
    {
        return 'WordPlate ' . get_bloginfo('version');
    }
}

升级指南

从 11 升级到 12
  1. 已存档 wordplate/framework 包。更新 composer.json 文件

    "require": {
    -   "wordplate/framework": "^11.1",
    +   "composer/installers": "^2.1",
    +   "johnpbloch/wordpress-core-installer": "^2.0",
    +   "johnpbloch/wordpress-core": "^6.0",
    +   "roots/bedrock-autoloader": "^1.0",
    +   "roots/wp-password-bcrypt": "^1.1",
    +   "symfony/http-foundation": "^6.0",
    +   "symfony/var-dumper": "^6.0",
    +   "vlucas/phpdotenv": "^5.4"
    }
  2. 使用此存储库中的 该文件 替换您的 public/wp-config.php 文件。请记住保存您在 wp-config.php 文件中定义的任何自定义常量。

  3. 将此存储库中的 src/helpers.php 文件添加到项目中,并在 composer.json 文件中自动加载它

    +"autoload": {
    +    "files": [
    +        "src/helpers.php"
    +    ]
    +}
  4. 在项目根目录中运行 composer update

从 10 升级到 11
  1. WordPlate 现在需要 PHP 8.0 或更高版本。

  2. composer.json 文件中将版本号提升到 ^11.0

  3. 在项目根目录中运行 composer update

从 9 升级到 10
  1. WordPlate 现在需要 PHP 7.4 或更高版本。

  2. composer.json 文件中的版本号提升到 ^10.0

  3. 在环境文件中将 WP_ENV 重命名为 WP_ENVIRONMENT_TYPE

  4. 在环境文件中将 WP_THEME 重命名为 WP_DEFAULT_THEME

  5. 如果存在,将环境文件中的 WP_URL 重命名为 WP_HOME

  6. 如果您使用 WP_CACHE 环境变量,需要在 public/wp-config.php 文件中定义它。

    $application->run();
    
    +define('WP_CACHE', env('WP_CACHE', false));
    
    $table_prefix = env('DB_TABLE_PREFIX', 'wp_');
  7. 可选:在以下文件中将 WP_PREFIX 重命名为 DB_TABLE_PREFIX

    • .env
    • .env.example
    • public/wp-config.php
  8. 在项目根目录中运行 composer update

从 8 升级到 9
  1. composer.json 文件中的版本号提升到 ^9.0

  2. public/mu-plugins/mu-plugins.php 文件复制到您的项目中。

  3. 更新 public/.gitignore 文件以允许新的 mu-plugins.php 文件。

    -mu-plugins/
    +mu-plugins/*
    +!mu-plugins/mu-plugins.php
  4. 在项目根目录中运行 composer update

从 7 升级到 8
  1. WordPlate 现在需要 PHP 7.2 或更高版本。

  2. composer.json 文件中的版本号提升到 ^8.0

    [!注意]
    WordPlate 8.0 需要 WordPress 5.3 或更高版本。

  3. Laravel 的辅助函数在 WordPlate 中现在是可选的。如果您想使用这些函数,请使用 Composer 在项目的根目录中安装 laravel/helpers 包。

    composer require laravel/helpers
  4. Laravel 的集合在 WordPlate 中现在是可选的。如果您想使用集合,请使用 Composer 在项目的根目录中安装 tightenco/collect 包。

    composer require tightenco/collect
  5. mix 辅助函数在 WordPlate 中现在是可选的。如果您想使用该函数,请使用 Composer 在项目的根目录中安装 ibox/mix-function 包。

    composer require ibox/mix-function
  6. 将任何对 assetstylesheet_urltemplate_url 函数的使用替换为 WordPress 的 get_theme_file_uri 函数。

  7. 将任何对 stylesheet_pathtemplate_path 函数的使用替换为 WordPress 的 get_theme_file_path 函数。

  8. 已移除 base_pathtemplate_slug 函数。

  9. 在项目根目录中运行 composer update

从 6 升级到 7
  1. composer.json 文件中的版本号提升到 ^7.0

    [!注意]
    WordPlate 7.0 需要 WordPress 5.0 或更高版本。

  2. wp-config.php 文件中将 realpath(__DIR__) 更新为 realpath(__DIR__.'/../')

  3. 如果您的公共目录不是命名为 public,请在 wp-config.php 文件中添加以下行。

    $application->setPublicPath(realpath(__DIR__));
  4. 在项目根目录中运行 composer update

从 5 升级到 6
  1. composer.json 文件中的版本号提升到 ^6.0

  2. wp-config.php 文件中将 realpath(__DIR__.'/../') 更新为 realpath(__DIR__)

  3. 在项目根目录中运行 composer update

从 4 升级到 5
  1. composer.json 文件中的版本号提升到 ^5.0

  2. wp-config.php 文件的内容复制并粘贴到您的应用程序中。

    [!注意]
    确保不要覆盖任何自定义常量。

  3. 在项目根目录中运行 composer update

致谢

WordPlate 的实现离不开这些惊人的开源项目。

许可证

WordPlate 包是开源软件,许可协议为 MIT 许可协议