Combining action and filter?

时间:2011-09-29 作者:user3316

我尝试为内容和边栏设置不同的视频oembed大小。我可以使用embed\\u defaults过滤器设置视频大小。但是这个过滤器适用于整个网站,我需要在侧边栏中有更小的视频大小。所以,我尝试向loop\\u start添加操作,并在此处检查主循环是否正在运行。

function test_main_loop( $query ) {
  global $wp_the_query;
  if ( $query === $wp_the_query ) {
    add_filter( \'embed_defaults\', \'big_embed_defaults\' );
  }
  else {
    add_filter( \'embed_defaults\', \'small_embed_defaults\' );
  }
}
add_action( \'loop_start\', \'test_main_loop\' );
我可以在add\\u action()函数中调用add\\u filter()吗?一切都正常,但我不确定这是否是正确的解决方案?或者,您是否有其他想法,如何仅通过WordPress oembed支持(无插件)实现不同的视频大小?谢谢你的帮助。。。

1 个回复
SO网友:Bainternet

更好的解决方案是在模板中实际调用之前添加过滤器挂钩,并在调用侧栏之前使用dynamic_sidebar 或任何使用此选项的对象:

add_filter( \'embed_defaults\', \'small_embed_defaults\' );
dynamic_sidebar(\'my_sidebar\');
remove_filter( \'embed_defaults\', \'small_embed_defaults\' );
主回路也是如此:

add_filter( \'embed_defaults\', \'big_embed_defaults\' );
while(have_posts()){
//YOUR LOOP...
} 
remove_filter( \'embed_defaults\', \'big_embed_defaults\' );

结束

相关推荐

Using the loop inside admin

我有以下问题:我正在为用户创建一个自定义元框,以便以友好的方式添加自定义字段我想生成一个下拉框,其中包含类别10下的所有帖子我在函数文件中创建了一个循环,用于检索我想要的帖子,并创建一个下拉选择列表。因此,当我转到“管理”->“帖子”并选择要编辑的帖子时,我会遇到以下问题:无论我选择哪个帖子,都会加载最后一篇帖子。以下是函数文件中使用的代码,然后在为自定义元框生成html代码时调用:function get_project_ids($proj_cat = 10) { $output