仅使用一个主函数多次添加过滤器

时间:2014-03-23 作者:souporserious

是否可以将add\\u filter与不同值的数组一起使用?

实现以下目标:

foreach($templates as $name) {
    add_filter( \'single_template\', function ( $template ) {

         global $post;

         if ($post->post_type == $name) {
              $template = dirname( __FILE__ ) . $name . \'.php\';
         }
         return $template;
    });
}

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

使用use 声明:

add_filter( \'single_template\', function ( $template ) use ( $name ) {
或者一次传递所有模板,只创建一个函数:

add_filter( \'single_template\', function ( $file ) use ( $templates ) {

     global $post;

     if ( in_array ( $post->post_type, $templates ) )
          return __DIR__ . "/{$post->post_type}.php";

     return $file;
});

结束

相关推荐

如果通过admin-ajax.php的回调函数调用IS_SIGNAL(),则不起作用

在我的single.php 我有一些这样的代码。。。if(is_singular(\'post\')) { echo \'Blog\'; } else { echo \'CPT\'; } 如果我接近single.php 通过使用从博客或CPT索引页the_permalink(), 此条件正常工作。当我打开单个博客帖子时,它会显示“Blog”,当我打开单个CPT时,它会显示“CPT”。现在的问题是如果方法single.php 通过的某个回调函数admi