将 Timber 用于 WordPress 管理屏幕



我正在构建一个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 文件!

最新更新