wordplate/wordplate

此包已被废弃且不再维护。作者建议使用vinkla/wordplate包。

WordPlate 模板

安装数: 10,674

依赖者: 0

建议者: 2

安全: 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 Keys

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

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

插件

WordPress Packagist

WordPlate集成了WordPress Packagist,这是一个镜像WordPress插件和主题目录的Composer仓库。通过此集成,您可以使用Composer安装和管理插件。

要安装插件,使用 wpackagist-plugin 作为供应商名称,以及插件短名作为包名称。例如,要安装 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插件)是安装在内容文件夹内特定目录中的一类WordPress插件。这些插件在WordPress安装的所有站点上自动启用。

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

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

要安装插件,使用 wpackagist-plugin 作为供应商名称,以及插件短名作为包名称

composer require wpackagist-plugin/clean-image-filenames

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

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

包含插件

Headache

WordPress的一个易于吞咽的止痛药插件。它移除了许多您迫不及待想要摆脱的默认WordPress功能。它移除了诸如feed、版本号和表情符号之类的元标签。

清理图像文件名

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

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

Vite.js

Vite 是一个构建工具,为现代Web项目提供更快、更轻的开发体验。它具有合理的默认设置,并通过其插件和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项目。以下是一个示例composer.json文件,该文件安装了WordPress的瑞典语言包。

{
    "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文件中的新路径到public目录。然后,在项目根目录运行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环境变量。

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

如果您使用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;
    }
}
我可以使用WordPlate与Tinkerwell一起使用吗?

如果您使用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许可证下授权。