从除我的自定义帖子类型之外的所有帖子/页面中删除wpautop

时间:2017-02-23 作者:Taylor Foster

我的整个主题使用remove_filter( \'the_content\', \'wpautop\' ); 从WYSIWYG的输出中剥离p标记和换行符。我有一个自定义的帖子类型events 我想带回来的自动p标签和br标签,但只是在自定义帖子类型。有没有办法确保过滤器不会在events.

2 个回复
SO网友:Manu

可以对当前post类型执行条件测试,如下所示:

if ( \'events\' != get_post_type() ) {
    remove_filter( \'the_content\', \'wpautop\' );
}

SO网友:Nathan Johnson

@Manu的答案可能对你有用,但如果你有一个以事件和帖子为post\\u类型的查询,它将失败。或者在同一页上进行两个不同的查询。解决方案是检查每个帖子是否属于事件类型,并相应地添加或删除过滤器。

add_action( \'the_post\', \'wpse_257708_the_post\', 10, 1 );
function wpse_257708_the_post( $post ) {
  if( \'events\' === $post->post_type ) {
    add_filter( \'the_content\', \'wpautop\' );
  } else {
    remove_filter( \'the_content\', \'wpautop\' );
  }
}