我尝试通过load_fields筛选器为某些字段类型自定义ACF字段宽度。我成功地使用以下内容自定义了图像类型:
function acf_image_width($image_width) {
$i_width = '40';
if(empty($image_width['wrapper']['width'])) {
$image_width['wrapper']['width'] = $i_width;
} }
add_filter('acf/load_field/type=image','acf_image_width', 10);
这是使用值40预先填充图像类型 Package 器属性宽度。
对于WYSIWYG字段,我做了同样的操作,但是得到了一个错误。我做了这个操作,但是我确信我得到的WYSIWYG字段类型是错误的。
function acf_wysiwyg_width($content_width) {
$c_width = '60';
if(empty($content_width['wrapper']['width'])) {
$content_width['wrapper']['width'] = $c_width;
} }
add_filter('acf/load_field/type=wysiwyg','acf_wysiwyg_width', 10);
我试过acf_the_content
,也不起作用。对字段类型的任何帮助都不胜感激。
1条答案
按热度按时间8ftvxx2r1#
使用
acf/load_field
过滤器时,请按照以下文档链接...https://www.advancedcustomfields.com/resources/acf-load_field/
acf/load_field
滤波器函数参数为...$field
(array)
包含所有设置的字段数组。所以你的两个函数参数都是错误的。不要把
$image_width
和$content_width
定义为你的函数参数,因为这只会让事情变得混乱,因为你实际上是把完整的$field
设置作为一个数组传递。只需将
$field
param array作为$field
传递即可,因为acf/load_field
筛选器会将字段设置作为数组传递到$field
param中。然后使用
$field
数组来更新、设置或覆盖当前数组值,并确保总是在acf/load_field
过滤函数的末尾返回$field
...因此在我的IDE(PhpStorm)中
如果我在
acf_wysiwyg_width
函数上面输入这个...然后点击
enter/return
,它会生成这些PHP注解...因此,在遵循任何WP或ACF文档中传递和返回的变量参数类型时,例如,在这种情况下,我将在传递的参数和返回类型上指定
(array)
(还添加了@see
和文档URL,以参考我为该过滤器/操作函数遵循的文档...确定
add_filter
部分,数字10
是该过滤器命中时的优先级。但是,当
add_filter
调用中的integer
再次被设置时,它意味着函数中传递的参数的数量,因此在上面的示例中,只传递了1
参数$field
,这意味着您不需要声明一个传递的filter/action
参数。但是,如果
add_filter
调用有2
参数要传递,例如使用此acf_wysiwyg_width
函数,则需要将1
传递的参数之上的任何内容定义到add_filter
调用中,如下所示...可能会有点混乱,但请仔细查看https://developer.wordpress.org/文档中的
filter/action
优先级、参数和返回类型。所有第三方文档(如ACF)也是如此。👍🏼