wordpress - 使用木材渲染插件页面
问题描述
我正在制作一个插件,它将一堆页面添加到 WP 的管理视图中。我真的很想使用 Timber,特别是 Twig 模板功能来呈现这些页面。
虽然我在 WP 和 PHP 方面的经验几乎为零,但这种方法吸引我的是我之前对 Django / Flask 模板的熟悉,它允许我扩展基本模板并为页眉、内容、页脚指定块。在使用 Timber 创建主题时,这似乎与 Timber 无关,但我终其一生都无法弄清楚如何使此设置在插件中工作。当然,我可以这样做:
add_action( 'admin_menu', 'test_setup_menu' );
function test_setup_menu() {
add_menu_page(
'Tables',
'Tables',
'manage_options',
'test-tables',
'admin_page_test'
);
}
function admin_page_test() {
Timber::Render( 'test.twig');
}
但这当然会渲染 test.twig 已经从主题填充的页眉和页脚部分。具体问题是我希望能够向页眉或页脚块添加信息。我知道我可以这样做:
add_action('admin_head', 'add_to_head')
function add_to_head() {
...
}
但这正是我要避免的类型,我希望将这种类型的逻辑封装在 Twig 模板中。有什么办法可以使这项工作?
解决方案
这是一个如何为插件添加自定义管理页面的示例。
<?php
/**
* Plugin Name: Test Run
*/
add_action('admin_menu', 'admin_menu_cb');
function admin_menu_cb()
{
// Ref: https://developer.wordpress.org/reference/functions/add_menu_page/
add_menu_page('Test Run Admin Page', 'Test Run', 'manage_options', 'test-run', 'render_menu_page_cb', 'dashicons-schedule', 3);
}
function render_menu_page_cb()
{
Timber::$locations = __DIR__.'/views';
$data = [];
Timber::render('main.twig', $data);
}
有关更完整的示例,请参阅下面的 repo。我最近创建了它作为任何人在 wordpress 插件中使用 Timber 的指南。 https://github.com/chanakasan/a-wordpress-plugin-using-timber
推荐阅读
- excel - 如何将自定义 ID 作为 Firebase 默认 ID
- python - 如何在 Python 的 VS Code 调试模式下后退一步?
- python-3.x - python - 使用 read_csv() 将 numpy 数组导入为 str
- vb.net - 如何将 wmf 文件动态分配给图片框
- python - 如何通过比较 Pandas 中另一列的值来填充列中的值
- python - 如何有效地删除欧几里德图中一对边之间的交集?
- ios - 在 RN 上开发时如何为 iOS 设置默认文本颜色
- javascript - Puppeteer:将返回结果与文本文件进行比较
- spring - Spring 无法识别 application.proerties 文件。无法显示属性文件中的配置定义
- r - 将数据操作转换为 R 中的函数