remove and then add wpautop

时间:2013-11-18 作者:Thrillho

首先,我会说是的,我搜索过了,然后是的,我找到了an answer to this question. 这基本上是我提出的解决方案,但我想确保这不是一个糟糕的解决方案。

这是真正的问题。我想把帖子标题作为某些类型帖子第一段的一部分。我的解决方案很简单。我把这个叫做the_content 对于特定类别。

function yb_link_post() {
  $link_post_title = \'<b class="headline"><a href="\' . get_permalink() . \'" title="\' . get_the_title() . \'">\' . get_the_title() . \'</a></b>\';
  $link_post_content = $link_post_title . \' — \' . get_the_content();

  remove_filter(\'the_content\', \'wpautop\');
  echo wpautop($link_post_content);
  add_filter(\'the_content\', \'wpautop\');
}
那么这是一种不好的方式吗?我有种预感,先删除然后添加wpautop 可能会产生我没有考虑的影响。谁能告诉我这是一个好的解决方案,还是有更聪明的方法?

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

嗯,移除autop 筛选自the_content 过滤器标签在这里没有意义,因为您从未应用过the_content 代码中的筛选器。。。

让我们看看的源代码the_content() 功能:

function the_content( $more_link_text = null, $strip_teaser = false) {
        $content = get_the_content( $more_link_text, $strip_teaser );
        $content = apply_filters( \'the_content\', $content );
        $content = str_replace( \']]>\', \']]&gt;\', $content );
        echo $content;
}
如您所见,它适用于the_content 筛选到的结果get_the_content() 作用

那么您的函数应该是什么样子呢?

function yb_link_post() {
    $link_post_title = \'<strong class="headline"><a href="\' . get_permalink() . \'" title="\' . esc_attr(get_the_title()) . \'">\' . get_the_title() . \'</a></strong>\';
    $link_post_content = $link_post_title . \' — \' . get_the_content();

  // you don\'t have to remove autop filter if you want to run it anyway... and content is already modified, so it will be `autop`ed correctly.
    $content = apply_filters(\'the_content\', $link_post_content);
    $content = str_replace( \']]>\', \']]&gt;\', $content );
    echo $content;
}
附言:你不应该使用<b> - 使用<strong> 相反此外,您应该正确地转义所有内容(即,如果您打印get_the_title() 作为html属性,您应该运行esc_attr 在上面)。

结束

相关推荐