变量名称拼写错误。您将其定义为$new_value
和$old_value
具有underscore 你忘了的。
除此之外,您的代码运行良好。
function myplugin_update_field_foo( $new_value, $old_value ) {
if ($new_value !== $old_value && is_array($old_value) && is_array($new_value)) {
$new_value = array_unique( array_merge( $new_value, $old_value ) );
}
return $new_value;
}
获取您使用的选项
$opt = get_option( \'ra_new_series_options\' );
如果不存在这样的默认值,则可以设置默认值:
$opt = get_option( \'ra_new_series_options\', [1, 3] );
您还需要确保
$new_value
以及
$old_value
是数组类型,因为如果其中一个不是,则代码将中断。
如果要合并不同类型(数组、字符串、整数),可以执行以下操作:
add_filter( \'pre_update_option_ra_new_series_options\', \'myplugin_update_field_foo\', 10, 2 );
function myplugin_update_field_foo( $new_value, $old_value ) {
$new_value_array = [];
// Check if array and merge if not push into the array
if( is_array( $new_value ) ) {
$new_value_array = array_merge( $new_value_array, $new_value );
} else {
array_push( $new_value_array, $new_value );
}
if( is_array( $old_value ) ) {
$new_value_array = array_merge( $new_value_array, $old_value );
} else {
array_push( $new_value_array, $old_value );
}
$new_value_array = array_unique( $new_value_array );
return $new_value_array;
}