happyr/wordpress-bundle

资助包维护!
Nyholm

安装: 429

依赖者: 0

建议者: 0

安全: 0

星星: 16

关注者: 3

分支: 6

开放问题: 7

类型:symfony-bundle

0.4.1 2021-07-16 00:52 UTC

This package is auto-updated.

Last update: 2024-09-16 07:52:45 UTC


README

让您的编辑使用WordPress出色的后端编写博客文章,同时仍然提供超快的响应,利用Twig与您的Symfony应用程序集成博客内容。作为额外奖励,这意味着您的WordPress应用程序无需暴露在互联网上。

这是一个与WordPress REST API通信的小型包。我们确保缓存每个请求,以便您的博客不会被请求淹没。

WordPress配置

重写链接

我们需要重写WordPress中的绝对URL。为了让我们更容易操作,请设置您的页面和帖子URL前缀为"page"。

Permalinks

清除缓存

您应该配置Symfony非常积极地缓存WordPress的资源。但是,当编辑进行更新时,您需要清除缓存并重新下载更新的资源。

Symfony包提供了一个用于清除缓存的端点。当帖子更新和删除时,您应使用此端点。

(待办事项:在 Resources/Wordpress 中添加一个小型的WordPress插件)

Symfony安装

设置此包需要很多移动部件。但它们都很有道理。让我们一一来看

API端点

您的WordPress博客在哪里?您应该定义到内置REST API的端点。以下示例中,我们假设您使用以下URL访问您的WordPress应用:http://demo.wp-api.org

# /config/packages/happyr_wordpress.yaml
wordpress:
  url: 'http://demo.wp-api.org/wp-json'

模板

此包包含2个默认模板。一个是列出最新帖子的索引页面模板,另一个是单个帖子/页面模板。当然,您可以用您喜欢的模板替换这些模板。这可以通过一些配置轻松完成。

# /config/packages/happyr_wordpress.yaml
wordpress:
  # ...
  controller:
    index_template: index.html.twig
    page_template: page.html.twig

路由

要启用默认控制器,您需要包含提供的routes.yaml。

# /config/routes.yaml
wordpress:
    resource: '@WordpressBundle/Resources/config/routes.yaml'
    prefix: '/p' # optional

当然,您可以使用自己的控制器。只需确保您定义一个名为happyr_wordpress_page的路由即可。

# /config/packages/happyr_wordpress.yaml
wordpress:
    # ...
    controller: false
  
# /config/routes.yaml
# ...

happyr_wordpress_page:
    path: /wp/{slug}
    methods: 'GET'
    controller: App\Controller\MyWordpressController::show
    requirements:
        slug: '.+'

缓存

WordPress是一个伟大的工具,但它的速度比您的Symfony应用程序慢。确保我们缓存所有来自WordPress的响应。我们使用Symfony\Contracts\Cache\CacheInterface进行缓存,因为它内置了冲击保护。

# /config/packages/happyr_wordpress.yaml
wordpress:
  # ...
  cache:
    service: 'App\Cache\SymfonyCache'
    ttl: 604800 # One week

解析器

当我们从WordPress获取数据时,我们需要以某种方式解析它。我们需要确保所有链接都指向symfony应用程序,而不是WordPress应用程序。我们还需要处理图像引用。

您可以通过配置禁用不需要的解析器

# /config/packages/happyr_wordpress.yaml
wordpress:
  # ...
  parser:
    image: false
    link: false
    url: false

您还可以通过注册一个新服务并使用happyr_wordpress.parser.pagehappyr_wordpress.parser.menu标记来添加自己的解析器。

图像

我们不想任何图像引用指向WordPress应用程序。我们需要下载图像并将其上传到某个好地方。比如AWS S3。您可以通过使用自定义上传器来配置RewriteImageReferences解析器来实现这一点。确保您的上传器实现了ImageUploaderInterface

# /config/packages/happyr_wordpress.yaml
wordpress:
  # ...
  parser:
    image: 
      uploader: 'App\MyUploaderService'

默认上传器将图像上传到本地文件夹。如果只有少量图像且您的Symfony应用程序前面有CloudFront或任何其他反向代理缓存,这就可以了。

 # /config/packages/happyr_wordpress.yaml
 wordpress:
   # ...
   local_image_uploader:
     local_path: '%kernel.project_dir%/public/uploads'
     public_prefix: '/uploads'