防止WordPress将<p>置于特定元素周围

时间:2017-09-16 作者:TheKidsWantDjent

在我的WordPress页面上,我有时会遇到这样的问题,WordPress会在元素周围放置标签,而我不需要它们。例如,我在许多页面上都有“隐形锚”:

<a class="anchor" id="some-id"></a>
WordPress在它周围放置了一个标签,在我不想要的地方插入一个空格。

我知道我可以用这样的方式过滤内容:

function filter_ptags($content) {
    return preg_replace(\'/<p(.)*(anchor)(.)*<\\/p>/\', \'<a class="anchor"></a>\', $content);
}

add_filter(\'the_content\', \'filter_ptags\');
然而,问题是,锚当然有一个单独的ID,我不知道。我如何解决这个问题?

1 个回复
SO网友:T.Todua

似乎你有一些插件,这导致了问题,因为WP没有在内容中放置隐藏的锚。您是否仔细检查了post editor文本区域(html/visual)以确定..anchor.. 是否出现?

但是,我不建议过滤,而是将正确的内容保存在后端,而不是在前端过滤不正确的内容。

使用类似以下内容:

add_action(\'save_post\', \'my_filter_func\',1);
function my_filter_func($post_id){
    if ( ! wp_is_post_revision( $post_id ) ){
       $_POST[\'post_content\'] = str_replace(\'<a class="anchor"> OR WHATEVER SHOULD BE THERE,  \'\',  $_POST[\'post_content\']);
    }
}

结束