过滤以从ACF WYSIWYG + Timber

时间:2017-04-11 12:58:54

标签: wordpress twig wysiwyg timber

所以我显示了ACF WYSIWYG的一些内容

{{  post.get_field('content') }}

我得到类似的东西

<p class=p1">Text</p>
<p class=p1">Text<p1>
<p class=p1"><img src="someimagejpg" /><p>
<p class=p1">Text<p1>

除了用p标签包装的图像外,一切都很好。

我搜索了一些过滤器,它看起来像下面的主要解决方案。

内部functions.php

 function filter_ptags_on_images($content) {
     $content = preg_replace('/<p>\s*(<a .*>)?\s*(<img .* \/>)\s*(<\/a>)?\s*<\/p>/iU', '\1\2\3', $content);
     return preg_replace('/<p>\s*(<iframe .*>*.<\/iframe>)\s*<\/p>/iU', '\1', $content);
}
add_filter('acf_the_content, 'filter_ptags_on_images');

但这似乎不适用于木材

看起来Timber有自己的方式来注册过滤器,但它对我没有用,任何帮助都会很感激,谢谢!!

我在Timber上试过这个:

add_filter( 'timber_context', array( $this, 'add_to_context' ) );

 function add_to_twig( $twig ) {
    /* this is where you can add your own functions to twig */

    $twig->addFilter('acf_the_content', new Twig_Filter_Function('filter_ptags_on_images'));
    $twig->addFilter('the_content', new Twig_Filter_Function('filter_ptags_on_images'));

    return $twig;
}

不工作

1 个答案:

答案 0 :(得分:0)

您可以在striptags过滤器中找到您的解决方案

{{ some_html|striptags }}

另外一件好事是,您可以避免删除某些HTML标记,因为您可能需要它们:

{{ some_html|striptags('<br><p>') }}

这将删除除以外的所有HTML标记     <br/>, <br>, <p>, and </p>

有关此内容的更多信息,您可以找到 - &gt; Timber/striptags

编辑: 嘿马里奥,

我以为你想把它们全部剥掉。 现在,使用.unwrap()使用jQuery这是一个棘手的方法 您需要做的只是在您的内容中添加一些类作为选择器的img标记。

我现在没有时间创建一些过滤器,但你可以看看这个here如何用PHP删除包装元素和this如何创建自定义树枝过滤器