我正在构建一个WordPress插件来显示与项目相关的文档。视图中需要大量的 HTML,内容来自 markdown 文件。
我想知道是否有可能将 Timber 插件用于管理屏幕,以帮助保持一切清洁?我在文档中找不到任何内容。
我有一个渲染视图(由add_menu_page()
调用)的函数,该视图工作正常。如果我echo
一些文本或 HTML,甚至回显文件的内容,我会看到我所期望的。
尝试以与我在主题中相同的方式使用 Timber,如下所示:
$context = Timber::get_context();
Timber::render(plugin_dir_url( __DIR__ ) . 'views/docs.twig', $context);
这只是给了我一个空白页面,根本没有抛出任何错误。
我需要先以某种方式初始化 Timber 吗?
这是我制作的第一个插件,我的 PHP 并不出色,所以如果这个问题不容易理解或理解,请道歉。
根据模板位置文档,默认情况下,Timber 在当前主题的views/
目录中查找模板文件。您可以通过以下方式添加其他路径:
TimberTimber::$locations = array(
plugin_dir_path( __FILE__ ) . 'views/'
);
Timber 将首先查找该位置,因此如果插件中的模板共享相同的名称,它们将覆盖主题中的任何模板。
是的!刚想通。
所以,在你的functions.php
,执行在管理端添加页面的常规过程
准备函数:
function documents_menu() {
add_menu_page('Docs', 'Docs', 'manage_options', '', 'myplguin_admin_page', 'dashicons-heart', 6);
}
然后钩子:
add_action( 'admin_menu', 'documents_menu' );
然后渲染器函数:
function myplguin_admin_page(){
if ( ! class_exists( 'Timber' ) ) {
// if you want to show some error message, this is the right place
echo "Timber doesn't exist!";
return;`enter code here`
}
这是关键部分:
Timber::render( 'docs.html.twig', array(
'args' => $args,
'instance' => $instance,
/* any other arguments */
));
}
然后在您的[theme]/views
上,创建docs.html.twig
并创建您的 Twig 文件!