leoloso / pop-api-wp
为 WordPress 引入 PoP API
v1.6.1
2019-12-04 06:59 UTC
Requires
- php: ~7.1
- getpop/api-graphql: dev-master
- getpop/api-rest: dev-master
- getpop/commentmeta-wp: dev-master
- getpop/comments-wp: dev-master
- getpop/engine-wp: dev-master
- getpop/media-wp: dev-master
- getpop/pages-wp: dev-master
- getpop/postmedia-wp: dev-master
- getpop/postmeta-wp: dev-master
- getpop/posts-api: dev-master
- getpop/posts-wp: dev-master
- getpop/taxonomies-wp: dev-master
- getpop/taxonomymeta-wp: dev-master
- getpop/taxonomyquery-wp: dev-master
- getpop/usermeta-wp: dev-master
- getpop/users-wp: dev-master
- johnpbloch/wordpress: >=5.3
- leoloso/wp-install: >=1.3
README
快速启动具有 PoP API、REST 和 GraphQL 的 WordPress 实例。
安装
PoP 需要 PHP 7.1 或更高版本。
在现有 WordPress 网站上安装 PoP
通过 WordPress 插件
即将推出...
通过 Composer
- 确保您的
composer.json
文件具有以下配置以接受最小稳定性"dev"
(PoP 尚未发布,代码直接从master
分支安装)
{ ... "minimum-stability": "dev", "prefer-stable": true, ... }
- 将以下包添加到
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", } }
- 在
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(); }
- 下载并安装项目中的包
$ composer update
注意:您可能需要等待几分钟 ☕️😁
- 刷新重写规则以启用 API 端点
- 登录 WordPress 管理员
- 转到
设置 => 永久链接
- 点击“保存更改”按钮(无需修改任何输入)
- ✅ 通过在您的网站上加载
/api/?query=fullSchema
来检查 PoP API 是否正常工作
可选
- 要在文件
.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>
- 通过
.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 网站
- 创建 WordPress 数据库和用户
- 通过环境变量配置 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}
- 从本存储库启动新项目
$ composer create-project leoloso/pop-api-wp
注意:您可能需要等待几分钟 ☕️😁
- 再次执行
install
以复制位于文件夹/mu-plugins
下的 WordPress 必须使用的插件(以某种方式,它不会通过create-project
执行)。cd
进入项目的文件夹(默认为"pop-api-wp"
)并执行
$ composer install
- 刷新重写规则以启用 API 端点
- 登录 WordPress 管理员
- 转到
设置 => 永久链接
- 点击“保存更改”按钮(无需修改任何输入)
- ✅ 网站安装在此
- 👉 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
可选
- 通过环境变量配置应用程序选项。
PoP 依赖于 Symfony 的 Dotenv 组件 通过文件 config/.env
定义环境变量。您可以创建或进一步编辑此文件,并创建额外的本地化 .env
文件(如 .env.local
,如 组件的文档 中所述)。
鸣谢
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。