我正在构建一个WordPress插件来显示与项目相关的文档。视图中需要大量的HTML,内容来自降价文件。
我想知道是否可以将Timber Plugin用于管理员屏幕,以帮助保持一切清洁?我在文档中找不到任何内容。
我有一个函数可以呈现一个工作正常的视图(由add_menu_page()
调用)。如果我echo
某些文字或HTML甚至回显文件的内容,我会看到我期待的内容。
尝试以与我在主题中相同的方式使用Timber,如下所示:
$context = Timber::get_context();
Timber::render(plugin_dir_url( __DIR__ ) . 'views/docs.twig', $context);
这只是给了我一个空页面,没有任何错误。
我是否需要先以某种方式初始化Timber?
这是我制作的第一个插件,如果这个问题不容易理解或理解,我的PHP并不是很好,所以道歉。
答案 0 :(得分:2)
根据Template Locations文档,默认情况下,Timber会在当前主题的views/
目录中查找模板文件。您可以通过这种方式添加其他路径:
Timber\Timber::$locations = array(
plugin_dir_path( __FILE__ ) . 'views/'
);
Timber将首先查看该位置,因此插件中的模板将覆盖主题中的任何内容(如果它们共享相同的名称)。
答案 1 :(得分:0)
是的!只是想通了。
因此,在您的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
并创建您的树枝文件!