ACF 覆盖使用 load_value 挂钩添加的 HTML 属性

Posted

技术标签:

【中文标题】ACF 覆盖使用 load_value 挂钩添加的 HTML 属性【英文标题】:ACF overrides HTML attributes added with load_value hook 【发布时间】:2019-12-22 00:04:03 【问题描述】:

我将 ACF 与 ACF Hook acf/load_value 一起使用以将自定义 html 包装器添加到 ACF 值。然后我使用 ACF 构建 Elementor 模板(我使用的是 Elementor PRO)。 模板有效并且 ACF 的值被渲染,但我在包装器中添加的属性消失了

我尝试更改过滤器的优先级,但这不是问题。我也尝试查看 ACF 设置,但似乎我无法仅更改某些设置来更改此行为。

这是我做的过滤器

if (!function_exists('my_acf_span_property')) 
    function my_acf_span_property($value, $property) 
        $value = '<span property="' . $property . '">' . $value . '</span>';
        return $value;
    


if (!function_exists('my_acf_industry_value')) 
    function my_acf_industry_value($value)
    
        return my_acf_span_property($value, 'industry');
    


add_filter('acf/format_value/name=industry', 'my_acf_industry_value');

我为每个需要更改的 ACF 制作了一个过滤器,这只是一个示例。

我尝试在函数my_acf_span_property 中调试将return $value; 更改为return htmlentities($value); 的过滤器,并将属性呈现在前端。

预期输出为&lt;span property="industry"&gt;ACF value&lt;/span&gt; 但是呈现的是&lt;span&gt;ACF value&lt;/span&gt;

可能是 Elementor 的问题?

有什么想法吗?

【问题讨论】:

【参考方案1】:

我通过一个动作解决了帖子中的属性

if (!function_exists('allow_property_attribute')) 
    function allow_property_attribute() 
        global $allowedposttags, $allowedtags;
        $newattribute = "property";

        $allowedposttags["span"][$newattribute] = true;
        $allowedtags["span"][$newattribute] = true;
        $allowedposttags["div"][$newattribute] = true;
        $allowedtags["div"][$newattribute] = true;
        $allowedposttags["p"][$newattribute] = true;
        $allowedtags["p"][$newattribute] = true;

    

add_action( 'init', 'allow_property_attribute' );

看来是 WordPress 是我的问题,而不是 Elementor 或 ACF。

【讨论】:

以上是关于ACF 覆盖使用 load_value 挂钩添加的 HTML 属性的主要内容,如果未能解决你的问题,请参考以下文章

通过覆盖“检测到 CI,跳过 Git 挂钩安装”在 Jenkins 管道作业中安装 husky git 挂钩

显示所有 acf 字段和 acf 选项页面字段的 Elementor 动态字段

覆盖应用程序的低级键盘挂钩问题

ACF 页面 while 循环在循环时中断页脚

WooCommerce 操作挂钩和覆盖模板

挂钩时覆盖窗口未正确绘制