使用Timber for WordPress管理屏幕

时间:2017-10-14 15:26:15

标签: wordpress timber wordpress-admin

我正在构建一个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并不是很好,所以道歉。

2 个答案:

答案 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并创建您的树枝文件!