metabolism/wordpress-bundle

使用 WordPress 构建企业级解决方案

安装量: 3,354

依赖者: 1

建议者: 1

安全: 0

星标: 58

关注者: 5

分支: 16

公开问题: 3

类型:symfony-bundle

2.3.3 2024-07-11 11:18 UTC

README

使用 WordPress 构建企业级解决方案。

Latest Stable Version Total Downloads Latest Unstable Version License Buy us a tree Doc - Gitbook

Symfony WordPress 后台管理包是一个强大的库,它将强大的 PHP 框架 Symfony 的灵活性与流行的内容管理系统 (CMS) WordPress 的用户友好性无缝结合。

此包使您能够利用 Symfony 的结构来开发高度定制的网络应用程序,同时使用 WordPress 作为内容管理的后端。它简化了 WordPress 与您的 Symfony 项目的集成,让您充分利用两者的优势。

它是如何工作的?

当 WordPress 包被加载时,它会选择性地包含用于在 Symfony 中利用 WordPress 功能和插件的必需的 WordPress 核心文件。

示例

// src/Controller/BlogController.php

/**
 * @param Post $post
 * @param PostRepository $postRepository
 * @return Response
 */
public function pageAction(Post $post, PostRepository $postRepository)
{
    $context = [];
    
    // get current post
    $context['post'] = $post;
    
    // find 10 "guide" ordered by title
    $context['guides'] = $postRepository->findBy(['post_type'=>'guide'], ['title'=>'ASC'], 10);

    return $this->render('page.html.twig', $context);
}
{# templates/page.html.twig #}

{% extends 'layout.html.twig' %}

{% block body %}
<article id="post-{{ post.ID }}" class="entry {{ post.class }}">

    {% if post.thumbnail %}
        <img src="{{ post.thumbnail|resize(800, 600) }}" alt="{{ post.thumbnail.alt }}"/>
    {% endif %}

    <div class="entry-content">
        
        {{ post.content|raw }}
        
        {# or #}
        
        {% for block in post.blocks %}
            {% include 'block/'~block.name~'.html.twig' %}
        {% endfor %}
    </div>
    
    <small>{{ post.custom_fields.mention }}</small>
    
    {% for guide in guides %}
        {% include 'guide.html.twig' with {props:guide} %}
    {% endfor %}

</article>
{% endblock body %}

文档

变更日志

请参阅 变更日志 了解最近的变化。

特性

使用 Composer

  • 通过 composer 安装/更新 WordPress
  • 通过 composer 安装/更新插件

使用 Symfony

  • Twig 模板引擎
  • 文件夹结构
  • HTTP 缓存
  • 路由
  • YML 配置
  • DotEnv
  • 增强安全性(WordPress 被隐藏)
  • 动态图片缩放
  • MVC

使用 WordPress 包

  • 帖子/术语/用户存储库
  • 帖子、术语、用户和博客的控制器参数解析器
  • 更新时的 Symfony 缓存失效(与 Varnish 兼容)
  • 帖子/帖子集合/图片/菜单/术语/用户/评论/博客/块实体
  • 可以使用 WordPress 预定义的路由
  • 站点健康检查 URL

使用 WP Steroids WordPress 插件

  • 使用 yml 配置 WordPress(查看示例
  • 自定义帖子类型和分类的永久链接配置
  • 维护模式
  • 开发模式下备份下载
  • 构建钩子
  • 禁用自动更新
  • 增强安全性
  • 使用符合 RFC 4122 标准的 UUID 版本 5 的更好的 guid
  • 多站点图片同步(对于多语言的多站点)
  • SVG 支持
  • 更好的性能
  • WordPress Bugfix
  • CSS 修复
  • 多站点帖子深度复制(与多站点语言切换插件一起使用)
  • 带有查看和删除操作的行政界面中的自定义数据表支持
  • Google 翻译或 Deepl 集成
  • 优化

YML 文件允许配置

  • 图片选项
  • 维护支持
  • 删除管理页面
  • 所见即所得 MCE 编辑器
  • 特性支持
  • 多站点配置
  • ACF/Carbon Fields 配置
  • 菜单
  • 自定义帖子类型
  • 自定义分类法
  • 页面、帖子、分类模板
  • 页面状态
  • 帖子格式
  • 外部表格查看器
  • 高级角色

安装

请确保已全局安装 Composer,如 Composer 文档中的安装章节所述。

创建新项目

$ composer create-project metabolism/wordpress-skeleton my_project_directory

请阅读完整的包安装指南以继续

设置现有Symfony项目

composer.json中定义WordPress核心和插件的安装路径

"extra": {
    "installer-paths": {
        "public/wp-bundle/mu-plugins/{$name}/": ["type:wordpress-muplugin"],
        "public/wp-bundle/plugins/{$name}/": ["type:wordpress-plugin"],
        "public/wp-bundle/themes/{$name}/": ["type:wordpress-theme"],
        "public/edition/": ["type:wordpress-core"]
    }
}

安装包

$ composer require metabolism/wordpress-bundle

对于不使用Symfony Flex的应用程序

注册包

// config/bundles.php

return [
    // ...
    Metabolism\WordPressBundle\WordPressBundle::class => ['all' => true],
];

请阅读完整的包安装指南以继续

演示

https://github.com/metabolism/wordpress-bundle-demo

这是为wordpress-bundle实现的Twenty Nineteen WordPress主题。

Screenshot from 2021-05-03 10-08-22

推荐/测试插件

路线图

  • 更多示例
  • 多站点的全局维护模式
  • 单元测试
  • 更好的类型提示

缺点

WordPress的函数在全局命名空间中可用。

某些WordPress插件可能无法正常工作(例如:Woocommerce)或需要额外的工作。

树状文档

此包是TreeWare。如果您在生产环境中使用它,那么我们要求您为世界种一棵树以感谢我们的工作。通过为TreeWare森林做出贡献,您将为当地家庭创造就业机会并恢复野生动物栖息地。

许可证

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