devuri/wp-env-config

此包已被废弃,不再维护。作者建议使用 devuri/wpframework 包。

一个用于使用.env文件定义WordPress配置常量的小型包。

v3.3.0 2024-02-14 22:10 UTC

README

225331174-d5ae1c0e-5ec0-493b-aabc-91c4cc6a14c4.png

WordPress环境配置

Unit Tests

介绍

wp-env-config 是一个小巧而强大的包,简化了在WordPress中定义配置常量的过程。通过利用PHP dotenv,此包允许您将敏感的配置数据安全地存储在环境变量中,这是根据十二要素应用程序方法构建和部署软件的最佳实践。

注意 此仓库包含wp-env-config的基本组件。如果您正在开发应用程序,请使用此仓库中的wp-env-app:wp-env-app

安装

要使用 wp-env-config,您可以通过Composer安装它。在终端中运行以下命令

composer create-project devuri/wp-env-app blog

或者对于现有项目

composer require devuri/wp-env-config

或者,您可以将 devuri/wp-env-config 添加到项目的 composer.json 文件中

"require": {
    "devuri/wp-env-config": "^0.5"
}

安装完成后,您可以在WordPress项目中开始使用此包。

# This is how the structure might look.

├── .env
├── wp-config.php
├── composer.json
├── composer.lock
├── LICENSE
├── public/
│   ├── index.php
│   ├── wp-admin/
│   ├── wp-content/
│   ├── wp-includes/
│   ├── .htaccess
│   ├── robots.txt
│   └── ...
└── vendor/

用法

要开始使用,请在项目的根目录中创建一个 .env 文件。在此文件中,定义您希望用作配置常量的环境变量,并根据需要更新数据库凭证和其他设置。

WP_HOME='https://example.com'
WP_SITEURL="${WP_HOME}"

WP_ENVIRONMENT_TYPE='production'
DEVELOPER_ADMIN='0'

MEMORY_LIMIT='256M'
MAX_MEMORY_LIMIT='256M'

DB_NAME=wp_dbName
DB_USER=root
DB_PASSWORD=
DB_HOST=localhost
DB_PREFIX=wp_

环境变量完整列表 环境变量

然后,在您的 wp-config.php 文件中,添加以下代码

<?php

use Urisoft\App\Setup;

require_once __FILE__ . '/vendor/autoload.php';

/**
 * The base configuration for WordPress
 *
 * @link https://codex.wordpress.org/Editing_wp-config.php
 *
 * @package WordPress
 */
Setup::init(__DIR__)->config(); // production

/**
 * WordPress Database Table prefix.
 *
 * You can have multiple installations in one database if you give each
 * a unique prefix. Only numbers, letters, and underscores please!
 */
$table_prefix = env('DB_PREFIX');


if ( ! defined( 'ABSPATH' ) ) {
	define( 'ABSPATH', dirname( __FILE__ ) . '/' );
}

// Sets up WordPress.
require_once ABSPATH . 'wp-settings.php';

这将从 .env 文件中加载环境变量并将它们定义为配置常量。

# the following files are supported (in that order)

env
.env
.env.secure
.env.prod
.env.staging
.env.dev
.env.debug
.env.local

# By default, Dotenv will stop looking for files as soon as it finds one.

您可以使用这种方法定义所需的任何数量的常量。

设置选项和环境

Setup::init(__DIR__)->config(); // production
Setup::init(__DIR__)->config('development'); // development
Setup::init(__DIR__)->config('staging'); // staging
Setup::init(__DIR__)->config('production'); // production
Setup::init(__DIR__)->config('secure'); // secure
Setup::init(__DIR__)->config('development', false )->environment()->database()->salts()->apply();
dump( Setup::init(__DIR__)->getEnvironment() ); // Get the current Environment setup.

环境常量。

调试必须开启,并将 'development' 设置为 .env 文件中的 WP_ENVIRONMENT_TYPE。

dump( Setup::init(__DIR__)->get_constant_map() ); // Display a list of constants defined by Setup.

这将输出以下内容

"WP_ENVIRONMENT_TYPE" => "development"
"WP_DEBUG" => true
"SAVEQUERIES" => true
"WP_DEBUG_DISPLAY" => true
"WP_DISABLE_FATAL_ERROR_HANDLER" => true
"SCRIPT_DEBUG" => true
"WP_DEBUG_LOG" => true
"DB_NAME" => ""
"DB_USER" => ""
"DB_PASSWORD" => ""
"DB_HOST" => "localhost"
"DB_CHARSET" => "utf8mb4"
"DB_COLLATE" => ""
"WP_HOME" => ""
"ASSET_URL" => ""
"WP_SITEURL" => ""
"UPLOADS" => "wp-content/uploads"
"WP_MEMORY_LIMIT" => "256M"
"WP_MAX_MEMORY_LIMIT" => "256M"
"CONCATENATE_SCRIPTS" => true
"FORCE_SSL_ADMIN" => true
"FORCE_SSL_LOGIN" => true
"AUTOSAVE_INTERVAL" => 180
"WP_POST_REVISIONS" => 10
"AUTH_KEY" => ""
"SECURE_AUTH_KEY" => ""
"LOGGED_IN_KEY" => ""
"NONCE_KEY" => ""
"AUTH_SALT" => ""
"SECURE_AUTH_SALT" => ""
"LOGGED_IN_SALT" => ""
"NONCE_SALT" => ""
"DEVELOPERADMIN" => null

全局辅助函数。

asset()

asset() 函数将生成一个资产的URL。

  • 我们可以通过设置 .env 中的 ASSET_URL 来配置资产URL:ASSET_URL="${WP_HOME}/assets"
  • 或者可选地,在主配置文件中。
asset( "/bootstrap/css/bootstrap-grid.css" ); // https://example.com/assets/dist/bootstrap/css/bootstrap-grid.css

asset( "/images/thing.png" ); // https://example.com/assets/dist/images/thing.png

asset( "/images/thing.png", "/static" ); // https://example.com/static/images/thing.png

asset_url()

资产目录的 asset_url() URL。

  • 注意: ASSET_URL 常量是可选的。
  • 我们可以通过设置 .env 中的 ASSET_URL 来配置资产URL:ASSET_URL="${WP_HOME}/assets"
  • 或者可选地,在主配置文件中。
asset_url(); // https://example.com/assets/dist/

asset_url() . "images/thing.png" // https://example.com/assets/dist/images/thing.png

asset_url( "/static" ); // https://example.com/static

env()

可以使用 env() 函数获取环境变量的值。

env('FOO');

内核。

Kernel $args

我们可以使用 Kernel $args 来设置自定义目录结构。

$args = [
        'web_root'        => 'public',
        'wp_dir_path'     => 'wp',
        'asset_dir'       => 'assets',
        'content_dir'     => 'content',
        'plugin_dir'      => 'plugins',
        'mu_plugin_dir'   => 'mu-plugins',
        'disable_updates' => true,
    ];

$http_app = new Kernel(__DIR__, $args);

// or

$http_app = new Kernel(__DIR__, ['content_dir' => 'content']);

CI/CD

我们可以使用GitHub Actions工作流来自动化部署过程。

name: remote ssh command
on: [push]
jobs:

  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
    - name: executing remote ssh commands using password
      uses: appleboy/ssh-action@v0.1.10
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        password: ${{ secrets.PASSWORD }}
        port: ${{ secrets.PORT }}
        script: whoami

https://github.com/marketplace/actions/ssh-remote-commands

无头模式

Corcel Corcel 是建立在 Laravel 框架的 Eloquent ORM 之上的 PHP 类集合,它提供了一个流畅的接口来连接和直接从WordPress数据库获取数据。 https://github.com/corcel/corcel

无头模式 将WordPress置于 "无头模式" 的辅助插件。适用于WordPress作为无头/解耦WordPress站点的CMS时。

// Activate the plugin and In wp-config.php, add a line defining the constant:
define( 'HEADLESS_MODE_CLIENT_URL', 'https://example.com' );

https://github.com/Shelob9/headless-mode

Redis对象缓存

警告

请注意,配置Redis对象缓存可能是一个复杂的过程,因为它依赖于外部Redis服务器才能正常工作。如果您在设置Redis服务器或配置使用Redis的应用程序方面经验不足或没有经验,建议在使用此插件之前寻求帮助或咨询专家。

Redis对象缓存:搭配https://wordpresstheme.cn/plugins/redis-cache/https://github.com/phpredis/phpredis/blob/develop/INSTALL.md,将使Web应用程序如虎添翼。

最好使用phpredis,我们在测试过程中遇到了cron作业失败的问题,如果您决定使用Redis对象缓存专业版,也需要phpredis。

为什么

本包的目的是通过利用PHP dotenv访问存储在.env文件中的环境变量来简化WordPress配置常量的定义。通过这种方式使用环境变量,我们可以通过避免在我们的代码中存储敏感凭据来提高WordPress安装的安全性。

这种方法遵循构建和部署软件的十二因素应用方法,特别是第三原则,强调将配置数据存储在环境中的重要性。通过实施此包,我们可以遵循最佳实践,并确保我们的WordPress实例既安全又易于维护。

开发和支持状态(测试中)

⚠️该项目目前正在积极开发中。如果您考虑将其用于生产,请随时与我们联系,我们将很高兴提供额外的指导和支持。我们还鼓励并欢迎任何与此框架相关的issue和pull请求。

我们仍然处于测试阶段。虽然它正在积极开发中,但我们正在积极寻求用户反馈并进行改进。您欢迎加入我们的Slack社区,我们在这里有持续和活跃的讨论。