extremesensio / easywordpressbundle
在 Symfony 3+ 中轻松实现 WordPress
Requires
- php: >=5.5.9
- incenteev/composer-parameter-handler: ~2.0
- symfony/console: ^3.2
- symfony/symfony: ^3.0
- vlucas/phpdotenv: ^2.4
This package is auto-updated.
Last update: 2022-02-01 13:07:30 UTC
README
1 - 预先条件和依赖
需要 PHP 7.0。
不得使用 PHP 7.1(WPML WordPress 扩展目前不支持此 PHP 版本)。
此包与 symfony 3 一起使用。
composer require extremesensio/easywordpressbundle
2 - 安装 & 使用
2.1 使用命令
在您的 AppKernel.php
中启用此包 new EasyWordpressBundle\EasyWordpressBundle(),
。
使用 wp-cli 在 web/wp
中安装 WordPress: wp-ci core download --path=project/web/wp
。
关于 wp-cli 的更多信息:http://wp-cli.org/fr/
您可以使用 easywordpress:install-wordpress
自动(在 docker 内执行)
- 将
wp-content
复制到web/content
- 将
web/wp-content/themes
移动到app/Resources
并将其符号链接到web/content/themes
您可以使用 easywordpress:generate:files
自动
- 创建
web/index.php
文件 - 创建
web/boot.php
文件 - 创建
app/config/parameters.php
文件 - 在根目录创建
.env
文件
对于每个页面模板,您可以使用 easywordpress:generate:templates
生成 wp 主题文件(不要生成 twig 文件)。对于页面帖子类型
use EasyWordpressBundle\Annotation\TemplateName; use EasyWordpressBundle\Controller\WordpressController; ... class HomeController extends WordpressController { /** * @TemplateName(name="Accueil") */ public function homeAction(Request $request) { return $this->render( 'AppBundle:Accueil:index.html.twig', [ 'base_dir' => realpath( $this->container ->getParameter('kernel.root_dir').'/..' ), ... ] ); } }
对于自定义帖子类型
use EasyWordpressBundle\Annotation\CustomPostType; use EasyWordpressBundle\Controller\WordpressController; ... class HomeController extends WordpressController { /** * @TemplateName(name="customPostType") */ public function homeAction(Request $request) { return $this->render( 'AppBundle:Custom:index.html.twig', [ 'base_dir' => realpath( $this->container ->getParameter('kernel.root_dir').'/..' ), ... ] ); } }
生成 app/Resource/themes/mythemename/page-templates/page_accueil.php
2.2 不使用命令
示例文件位于 doc 文件夹中。
按照上述列表操作,并修改 web/.htaccess
。
2.3 更新一些文件
routing.yml
wordpress: resource: "@EasyWordpressBundle/Resources/config/routing.yml"
config_dev.yml
imports: - { resource: parameters.php }
config.yml
easy_wordpress: wordpress_directory: '%kernel.root_dir%/../web/wp/' controllers_namespace: AppBundle\\Controller theme_directory: '%kernel.root_dir%/Resources/themes/mytheme/' yoast_title_override: %easywordpressbundle.yoast_title_override%
web/.htaccess
您可以使用 doc/.htaccess.example
。
functions.php
对于每个主题,您需要在 functions.php
中添加这两行
require_once __DIR__.'/../../../../web/boot.php'; symfony('wordpress.helper')->boot();
配置您的虚拟主机
<Directory /var/www/html/web>
AllowOverride All
Require all granted
<IfModule mod_rewrite.c>
Options -Indexes
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
</Directory>
3 - 特性
3.1 使用 EasyWordpress 控制器方法
您必须使用 EasyWordpress 控制器扩展您的控制器
namespace AppBundle\Controller; use EasyWordpressBundle\Annotation\TemplateName; use EasyWordpressBundle\Controller\WordpressController; public function homeAction() { // Get WordPress posts from the current page $posts = $this->getPosts(); // Render in Twig view return $this->render( ':home:index.html.twig', [ 'base_dir' => realpath( $this ->container ->getParameter('kernel.root_dir').'/..' ), 'posts' => $posts ] ); }
3.3 EasyWordpressBundle 服务
- CustomPostType
- 瞬态
- 辅助器
- 网站地图
- 导航
3.4 Twig 函数
wp_head
wp_head
包含 WordPress 头部(样式、脚本、元标签和其他标签)。
更多信息:https://codex.wordpress.org/Plugin_API/Action_Reference/wp_head
wp_footer
wp_footer
包含 WordPress 底部(脚本标签)。
更多信息:https://codex.wordpress.org/Function_Reference/wp_footer
get_content
wp_nav_menu
wp_nav_menu(themeLocation, menu, menuClass, menuId, container, containerClass, containerId, echo, wp_page_menu, before, after, linkBefore, linkAfter, depth, walker)
从主题选项外观创建的 WordPress 菜单创建导航。
仅需要 themeLocation
和 menu
变量。
更多信息:https://developer.wordpress.org/reference/functions/wp_nav_menu/
_e
_e(text, domain)
显示已翻译的文本。
更多信息:https://developer.wordpress.org/reference/functions/_e/
__
__(text, domain)
检索文本的翻译。
更多信息:https://developer.wordpress.org/reference/functions/__/
bloginfo
bloginfo(info)
显示有关当前站点的信息。
更多信息:https://developer.wordpress.org/reference/functions/bloginfo/
get_field
get_field(selector, (postId), (formatValue))
显示 ACF 字段的內容。
更多信息:https://www.advancedcustomfields.com/resources/get_field/
wp_thumbnail
wp_thumbnail(id)
从帖子 ID 返回缩略图 URL。
3.5 Twig 过滤器
do_shortcode
content|do_shortcode
在 html 代码中解释短代码。要显示 html 标签,您必须使用 Twig 过滤器 |raw
或 |purify
。
有关 purify Twig 过滤器的更多信息:https://github.com/Exercise/HTMLPurifierBundle
3.6 WordPress Yoast SEO 插件
如果您使用 Yoast SEO 插件
,您可以覆盖 <head>
中的 <title>
标签内容。您必须启用此功能
easy_wordpress: yoast_title_override: true
祝您使用愉快。