init-development-studios/headless-wordpress-sync

使用 WP REST API 从无头 WordPress 实例同步内容。

3.1.0 2024-03-16 13:19 UTC

README

一个用于简化与无头 WordPress 实例集成的 Laravel 扩展包。

[[目录]]

入门指南

本指南将指导您设置 Laravel 实例和无头 WordPress 实例。

设置分为两个步骤

  1. 设置 WordPress
  2. 设置 Laravel

无头 WordPress

设置 WordPress 包括安装和激活两个 WordPress 插件。

步骤 X

让我们从安装 JWT Authentication For WP REST API 插件开始。

按照 插件安装页面 上的说明操作。

对于绝大多数用户,“使用 WordPress 控制台”就足够了。

步骤 X

JWT Authentication 插件还需要一些配置。我们必须在 wp-config.php 文件中定义一个密钥。

只需添加以下内容。

define('JWT_AUTH_SECRET_KEY', 'your-top-secret-key');

您可以使用这里的字符串 (https://api.wordpress.org/secret-key/1.1/salt/)。

步骤 X

从 WordPress 管理界面中的已安装插件页面激活 JWT Authentication 插件。

步骤 X

现在让我们安装 Laravel 无头 WordPress 插件。

由于此插件未公开发布,我们最好通过 ZIP 文件安装新插件。

下载最新版本 (.zip)

步骤 X

从“添加新插件”页面点击页面顶部的“上传插件”按钮。

然后点击“浏览”按钮。

找到并选择上面下载的 ZIP 文件。

点击“立即安装”。

然后点击“激活插件”。

WordPress 已设置完成!

Laravel

现在我们来进行 Laravel 扩展包的安装和配置。

步骤 X

可以通过 composer 安装 Laravel 扩展包。

但是,由于此扩展包未公开发布,需要对 composer.json 文件进行以下手动更改。

添加以下根 JSON 对象

"repositories": [
    {
        "type": "git",
        "url": "git@gitlab.com:init-dev/headless-wordpress/headless-wordpress-sync.git"
    }
],

然后运行

composer require init-development-studios/headless-wordpress-sync:dev-main

注意,您必须有权访问 GIT 仓库。

步骤 X

需要迁移几个表。

发布迁移。

php artisan vendor:publish --tag=headless-wordpress-sync-migrations

步骤 X

运行迁移。

php artisan migrate

步骤 X

现在让我们发布配置文件。

php artisan vendor:publish --tag=headless-wordpress-sync-config

步骤 X

现在 Laravel 应用的 config 目录中将有 headless-wordpress-sync.php 配置文件。

查看该文件并根据需要配置您的应用程序。请注意,以下属性是必需的

  • url - 可通过应用程序的 .env 文件中的 HEADLESS_WP_URL 进行配置。
  • username - 可通过应用程序的 .env 文件中的 HEADLESS_WP_USERNAME 进行配置。
  • password - 可通过应用程序的 .env 文件中的 HEADLESS_WP_PASSWORD 进行配置。

示例 .env

HEADLESS_WP_URL=https://wordpress.test
HEADLESS_WP_USERNAME=api-user
HEADLESS_WP_PASSWORD="tQdVIc!gdb7eD(o9IZ&^WEXm"
可选

在本地开发时,通常不需要进行SSL / TLS验证。

HEADLESS_WP_VERIFY_CERTIFICATE=false

当为多个网站托管内容时,需要提供要在此Laravel应用程序实例上显示内容的网站的website_slug

此slug与在无头WordPress应用程序的Admin界面中定义的“Posts > Website”相匹配。

HEADLESS_WP_WEBSITE_SLUG=collabpay

步骤 X

为了使Laravel应用程序与WordPress应用程序保持同步,每分钟执行一个定时任务

定时任务将自动运行。

确保应用程序正在运行定时任务,并且HEADLESS_WP_SYNC_ENABLED.env文件中不存在或设置为TRUE

注意,也可以通过运行php artisan headless-wp:sync手动执行同步。

步骤 X

现在您可以开始更新应用程序,以展示您的WordPress托管内容。

获取内容

可以使用标准的Eloquent查询获取内容!

文章

所有文章

WpPost::all()

单个文章

WpPost::whereSlug('individual-post-slug')->first();

限定于当前网站

WpPost::currentWebsite()->get()

仅发布文章

WpPost::published()->get()

按发布日期/时间排序

WpPost::orderByDesc('published_at_utc')->get()

在指定类别中

WpPost::inCategory(WpCategory::whereSlug('tutorials')->first())->get()

单个文章类别

WpPost::whereSlug('individual-post-slug')->first()->categories;

单个文章标签

WpPost::whereSlug('individual-post-slug')->first()->tags;

单个文章作者

WpPost::whereSlug('individual-post-slug')->first()->author;

相关文章

所有相关和反向相关的文章。

要关联文章,请在一个文章上添加名为related_post_slugs的自定义字段,然后将值设置为以逗号分隔的文章slug列表。

WpPost::whereSlug('individual-post-slug')->first()->related();

相关文章查询

与上面相同,但将返回一个查询构建器,允许进一步查询构建

$query = WpPost::whereSlug('individual-post-slug')->first()->relatedQuery();

// Can then be queried further (eg only return published related articles)
$query->published()->get();

搜索文章

在文章标题和内容中搜索精确的术语。

注意,这是在数据库级别执行的。

为了更好的搜索,请考虑使用Laravel Scout

WpPost::search('individual-post-slug')->first()->related();

类别

所有类别

WpCategory::all()

单个类别

WpCategory::whereSlug('tutorials')->first()

作者(用户)

所有作者

WpUser::all();

单个作者

WpUser::find(1);

单个作者的Gravatar头像URL

WpUser::find(1)->image()->url();

待办事项

  • 禁用WP前端,使其真正成为无头。以前使用过另一个插件,但是内置此功能将更理想。
  • 在单个类别页面上渲染搜索输入
  • 改进社交媒体元标签
  • 想法:在单个文章侧边栏上添加搜索,以及可能在整个网站的其他地方。现在很容易做到。

支持

待办事项

路线图

短期

  • 使WP插件公开。需要进一步完善和测试。可能在实际使用案例CollabPay中实现。
  • 使Laravel插件公开。应在WP插件公开发布时发生。
  • 在readme中添加截图

长期

  • 扩展对更多WordPress功能/功能的支持。
  • 在搜索文章时支持Laravel Scout。

贡献

待办事项

作者和致谢

待办事项

许可

待办事项