从Mustache模板动态创建多个小部件

时间:2013-07-05 作者:aendra

我建立了一些基本的Mustache templates 对于一个项目,现在我想有效地将它们作为小部件提供给WordPress。

//This uses Composer to manage dependencies (Mustache).
require \'vendor/autoload.php\';

$mustaches = array_diff(scandir(dirname(__FILE__) . \'/templates\'), array(\'..\', \'.\'));
$templates = array();
foreach ($mustaches as $mustache) {
  $code = file_get_contents(dirname(__FILE__) . \'/templates/\' . $mustache);
  $templates[$mustache] = array(
    \'id\' => str_replace(\'.mustache\', \'\', $mustache),
    \'template\' => $code,
    \'name\' => preg_replace(\'/\\{\\{\\! name\\: \\"(.*?)\\"\\}\\}/\', \'$1\' , explode("\\n", $code, 1)), //Human name defined in comment at start of template.
  );
}
现在我该怎么办?我不能这样动态定义类:

foreach ($mustaches as $mustache) {    
  class $mustache extends WP_Widget { ... 
这会产生语法错误,因为动态扩展并不是任何人都会做的事情。

How do I register multiple widgets with a single class definition?

非常感谢。

1 个回复
最合适的回答,由SO网友:Rarst 整理而成

如何使用单个类定义注册多个小部件?

WP中基于类的现代小部件API假定一个类对应一个小部件。注意,您仍然可以有中间类(extendWP_Widget, 然后再次扩展它),但最终注册的仍然是每个类一个小部件。

从你的问题来看,不太清楚你的胡子模板在功能上是什么,以及它们的多样性。

若它们足够相似,那个么您可以创建单个小部件,并在界面中公开模板列表,以便为每个小部件实例进行选择。

结束

相关推荐

页面不会使用LOOP或PRE_GET_POST显示在首页上

我改变了主题,以我认为“合适”的方式工作。在阅读了抄本并在这个网站上看到了一些东西之后。我从头开始。加载了2012主题。写了两页。主页和博客。我将主页设置为默认的2012年首页。php模板。然后在“设置->阅读”中,我将静态首页设置为主页,将贴子页面设置为博客。我知道这些帖子将从索引中删除。因此,在该文件中,我将自定义循环从博客类别和我的头版页面中拉出来。php文件我放置了一个自定义循环来获取页面。 $args = array( \'post_type\' => \'page\