leoloso/pop-api-wp

为 WordPress 引入 PoP API

v1.6.1 2019-12-04 06:59 UTC

This package is auto-updated.

Last update: 2024-09-21 21:37:07 UTC


README

快速启动具有 PoP API、REST 和 GraphQL 的 WordPress 实例。

安装

PoP 需要 PHP 7.1 或更高版本。

在现有 WordPress 网站上安装 PoP

通过 WordPress 插件

即将推出...

通过 Composer

  1. 确保您的 composer.json 文件具有以下配置以接受最小稳定性 "dev"(PoP 尚未发布,代码直接从 master 分支安装)
{
    ...
    "minimum-stability": "dev",
    "prefer-stable": true,
    ...
}
  1. 将以下包添加到 composer.json 文件的 require 部分
{
    "require": {
        "getpop/commentmeta-wp": "dev-master",
        "getpop/pages-wp": "dev-master",
        "getpop/postmeta-wp": "dev-master",
        "getpop/taxonomyquery-wp": "dev-master",
        "getpop/usermeta-wp": "dev-master",
        "getpop/postmedia-wp": "dev-master",
        "getpop/graphql": "dev-master",
        "getpop/api-rest": "dev-master",
        "getpop/api-endpoints-for-wp": "dev-master",
        "getpop/engine-wp-bootloader": "dev-master",
    }
}
  1. wp-config.php 文件开头添加以下代码
// Load Composer’s autoloader
require_once (__DIR__.'/vendor/autoload.php');

// Initialize all PoP components
$componentClasses = [
    \PoP\CommentMetaWP\Component::class,
    \PoP\PagesWP\Component::class,
    \PoP\PostMetaWP\Component::class,
    \PoP\PostMediaWP\Component::class,
    \PoP\TaxonomyQueryWP\Component::class,
    \PoP\UserMetaWP\Component::class,
    \PoP\GraphQL\Component::class,
    \PoP\RESTAPI\Component::class,
    \PoP\APIEndpointsForWP\Component::class,
];
foreach ($componentClasses as $componentClass) {
    $componentClass::initialize();
}
  1. 下载并安装项目中的包
$ composer update

注意:您可能需要等待几分钟 ☕️😁

  1. 刷新重写规则以启用 API 端点
  • 登录 WordPress 管理员
  • 转到 设置 => 永久链接
  • 点击“保存更改”按钮(无需修改任何输入)
  1. ✅ 通过在您的网站上加载 /api/?query=fullSchema 来检查 PoP API 是否正常工作

可选

  1. 要在文件 .htaccess 中添加以下代码以接受外部 API 查询
<IfModule mod_rewrite.c>
# Enable the server to accept external API queries
Header set Access-Control-Allow-Methods "OPTIONS, GET, POST"
Header set Access-Control-Allow-Headers "origin, content-type"
Header set Access-Control-Allow-Origin "*"
</IfModule>
  1. 通过 .htaccess 文件启用 API 的漂亮永久链接

您可以通过添加以下代码到 .htaccess 文件(在以 # BEGIN WordPress 开头的 WordPress 重写代码之前)来为 API 端点(如 /api/graphql)添加漂亮永久链接,而不是添加依赖项 "getpop/api-endpoints-for-wp" 并刷新永久链接

# Pretty permalinks for API
  # a. Resource endpoints
    # 1. GraphQL or REST: /some-url/api/graphql
    # 2. REST: /some-url/api/rest
    # 3. PoP native: /some-url/api
  # b. Homepage single endpoint (root)
    # 1. GraphQL or REST: /api/graphql
    # 2. REST: /api/rest
    # 3. PoP native: /api
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# a. Resource endpoints
# 1 and 2. GraphQL or REST: Rewrite from /some-url/api/(graphql|rest)/ to /some-url/?scheme=api&datastructure=(graphql|rest)
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)/api/(graphql|rest)/?$ /$1/?scheme=api&datastructure=$2 [L,P,QSA]

# 3. PoP native: Rewrite from /some-url/api/ to /some-url/?scheme=api
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)/api/?$ /$1/?scheme=api [L,P,QSA]

# b. Homepage single endpoint (root)
# 1 and 2. GraphQL or REST: Rewrite from api/(graphql|rest)/ to /?scheme=api&datastructure=(graphql|rest)
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^api/(graphql|rest)/?$ /?scheme=api&datastructure=$1 [L,P,QSA]

# 3. PoP native: Rewrite from api/ to /?scheme=api
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^api/?$ /?scheme=api [L,P,QSA]
</IfModule>

通过安装 PoP 创建新的 WordPress 网站

通过 ComposerWP-CLI(全局安装)

  1. 创建 WordPress 数据库和用户
  2. 通过环境变量配置 WordPress

将以下代码复制到编辑器中,将所有值(如 {YOUR_SITE_DB_NAME})替换为您自己的值,然后将其粘贴到终端中执行,或者将其保存到文件 "~/.bash_profile" 中,然后执行 source ~/.bash_profile

export DB_NAME={YOUR_SITE_DB_NAME} #eg: database
export DB_USER={YOUR_SITE_DB_USER} #eg: admin
export DB_PASSWORD={YOUR_SITE_DB_PASSWORD} #eg: sADF!kl9diq@#Sjfk
export DB_HOST={YOUR_SITE_DB_HOST} #eg: 127.0.0.1
export SITE_URL_WITHOUT_HTTP={YOUR_SITE_URL_WITHOUT_HTTP} #eg: localhost
export SITE_URL_WITH_HTTP={YOUR_SITE_URL_WITH_HTTP} #eg: https://
export SITE_NAME="{YOUR_SITE_NAME}" #eg: "My awesome website"
export ADMIN_USER={ADMIN_USER} #eg: admin
export ADMIN_PASSWORD={ADMIN_PASSWORD} #eg: JKo$@sfjASD00w
export ADMIN_EMAIL={ADMIN_EMAIL} #eg: pedro@example.com

设置 SALT 密钥有两种选择

a. 通过环境变量 SHUFFLE_SALT_KEYS 设置随机值

export SHUFFLE_SALT_KEYS=true

b. 直接设置相应的值

# Obtain random values from https://api.wordpress.org/secret-key/1.1/salt
export AUTH_KEY={YOUR_AUTH_KEY}
export SECURE_AUTH_KEY={YOUR_SECURE_AUTH_KEY}
export LOGGED_IN_KEY={YOUR_LOGGED_IN_KEY}
export NONCE_KEY={YOUR_NONCE_KEY}
export AUTH_SALT={YOUR_AUTH_SALT}
export SECURE_AUTH_SALT={YOUR_SECURE_AUTH_SALT}
export LOGGED_IN_SALT={YOUR_LOGGED_IN_SALT}
export NONCE_SALT={YOUR_NONCE_SALT}
  1. 从本存储库启动新项目
$ composer create-project leoloso/pop-api-wp

注意:您可能需要等待几分钟 ☕️😁

  1. 再次执行 install 以复制位于文件夹 /mu-plugins 下的 WordPress 必须使用的插件(以某种方式,它不会通过 create-project 执行)。 cd 进入项目的文件夹(默认为 "pop-api-wp")并执行
$ composer install
  1. 刷新重写规则以启用 API 端点
  • 登录 WordPress 管理员
  • 转到 设置 => 永久链接
  • 点击“保存更改”按钮(无需修改任何输入)
  1. ✅ 网站安装在此
  • 👉 WordPress 网站: {YOUR_SITE_URL_WITH_HTTP}
  • 👉 WordPress 管理员: {YOUR_SITE_URL_WITH_HTTP}/wp/wp-admin/
  • 👉 PoP API: {YOUR_SITE_URL_WITH_HTTP}/api/?query=fullSchema

可选

  1. 通过环境变量配置应用程序选项。

PoP 依赖于 Symfony 的 Dotenv 组件 通过文件 config/.env 定义环境变量。您可以创建或进一步编辑此文件,并创建额外的本地化 .env 文件(如 .env.local,如 组件的文档 中所述)。

鸣谢

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件