@@ -67,6 +67,7 @@ public function prepareFieldTypes(array $field): array {
67
67
$ field = wp_parse_args ($ field , [
68
68
'name ' => 'Field ' ,
69
69
'type ' => 'string ' ,
70
+ 'sanitize_callback ' => null ,
70
71
'renderValue ' => function ($ obj ) {
71
72
return $ obj ;
72
73
},
@@ -84,16 +85,22 @@ public function prepareFieldTypes(array $field): array {
84
85
/* 1. Register meta fields */
85
86
86
87
protected function prepareMetaArgs (string $ metaKey , array $ args = []): array {
88
+ $ args ['type ' ] = $ args ['type ' ] ?? 'text ' ;
87
89
88
90
if (!isset ($ args ['name ' ]) || !strlen ($ args ['name ' ])) {
89
91
_doing_it_wrong (__FUNCTION__ , sprintf (__ ('Field "%s" is required when registering a custom meta field ' , 'layered ' ), $ args ['name ' ]), null );
90
92
}
91
93
94
+ if (!isset ($ this ->fields [$ args ['type ' ]])) {
95
+ _doing_it_wrong (__FUNCTION__ , sprintf (__ ('Field type "%s" is not available as meta field ' , 'layered ' ), $ args ['type ' ]), null );
96
+ }
97
+
92
98
$ args = wp_parse_args ($ args , [
93
99
'type ' => 'text ' ,
94
100
'description ' => '' ,
95
101
'group ' => __ ('Meta Fields ' , 'layered ' ),
96
102
'single ' => true ,
103
+ 'sanitize_callback ' => $ this ->fields [$ args ['type ' ]]['sanitize_callback ' ],
97
104
'defaultValue ' => null ,
98
105
'initialValue ' => null ,
99
106
'value ' => '' ,
@@ -110,10 +117,6 @@ protected function prepareMetaArgs(string $metaKey, array $args = []): array {
110
117
'showInBulkEdit ' => false
111
118
]);
112
119
113
- if (!isset ($ this ->fields [$ args ['type ' ]])) {
114
- _doing_it_wrong (__FUNCTION__ , sprintf (__ ('Field type "%s" is not available as meta field ' , 'layered ' ), $ args ['type ' ]), null );
115
- }
116
-
117
120
$ args ['advancedType ' ] = $ args ['type ' ];
118
121
$ args ['type ' ] = $ this ->fields [$ args ['type ' ]]['type ' ];
119
122
@@ -489,12 +492,19 @@ public function savePostMetaFields(int $postId, \WP_Post $post) {
489
492
delete_post_meta ($ post ->ID , $ metaKey );
490
493
491
494
foreach ($ _POST [$ metaKey ] as $ i => $ value ) {
495
+ if ($ metaField ['sanitize_callback ' ]) {
496
+ $ value = call_user_func ($ metaField ['sanitize_callback ' ], $ value );
497
+ }
492
498
if (strlen ($ value )) {
493
499
add_post_meta ($ post ->ID , $ metaKey , $ value );
494
500
}
495
501
}
496
502
} else {
497
- update_post_meta ($ post ->ID , $ metaKey , $ _POST [$ metaKey ]);
503
+ $ value = $ _POST [$ metaKey ];
504
+ if ($ metaField ['sanitize_callback ' ]) {
505
+ $ value = call_user_func ($ metaField ['sanitize_callback ' ], $ value );
506
+ }
507
+ update_post_meta ($ post ->ID , $ metaKey , $ value );
498
508
}
499
509
} else {
500
510
delete_post_meta ($ post ->ID , $ metaKey );
@@ -513,12 +523,19 @@ public function saveTaxonomyMetaFields(int $termId, int $termTaxonomyId, string
513
523
delete_term_meta ($ termId , $ metaKey );
514
524
515
525
foreach ($ _POST [$ metaKey ] as $ i => $ value ) {
526
+ if ($ metaField ['sanitize_callback ' ]) {
527
+ $ value = call_user_func ($ metaField ['sanitize_callback ' ], $ value );
528
+ }
516
529
if (strlen ($ value )) {
517
530
add_term_meta ($ termId , $ metaKey , $ value );
518
531
}
519
532
}
520
533
} else {
521
- update_term_meta ($ termId , $ metaKey , $ _POST [$ metaKey ]);
534
+ $ value = $ _POST [$ metaKey ];
535
+ if ($ metaField ['sanitize_callback ' ]) {
536
+ $ value = call_user_func ($ metaField ['sanitize_callback ' ], $ value );
537
+ }
538
+ update_term_meta ($ termId , $ metaKey , $ value );
522
539
}
523
540
} else {
524
541
delete_term_meta ($ termId , $ metaKey );
@@ -534,7 +551,11 @@ public function savePostBulkEdit() {
534
551
foreach ($ metaFields as $ metaKey => $ metaField ) {
535
552
if ($ metaField ['showInBulkEdit ' ] && isset ($ _REQUEST ['_ ' . $ metaKey ]) && strlen ($ _REQUEST ['_ ' . $ metaKey ]) && $ _REQUEST ['_ ' . $ metaKey ] != -1 ) {
536
553
foreach ($ _REQUEST ['post ' ] as $ postId ) {
537
- update_post_meta ($ postId , $ metaKey , $ _REQUEST ['_ ' . $ metaKey ]);
554
+ $ value = $ _REQUEST ['_ ' . $ metaKey ];
555
+ if ($ metaField ['sanitize_callback ' ]) {
556
+ $ value = call_user_func ($ metaField ['sanitize_callback ' ], $ value );
557
+ }
558
+ update_post_meta ($ postId , $ metaKey , $ value );
538
559
}
539
560
}
540
561
}
@@ -761,6 +782,7 @@ public static function bulkEditableSelectField(array $metaField, string $metaKey
761
782
$ fields ['url ' ] = [
762
783
'name ' => __ ('URL ' , 'layered ' ),
763
784
'type ' => 'string ' ,
785
+ 'sanitize_callback ' => 'esc_url_raw ' ,
764
786
'renderEditableField ' => [MetaFields::class, 'editableTextField ' ],
765
787
'renderEditableFieldBulk ' => [MetaFields::class, 'bulkEditableTextField ' ]
766
788
];
@@ -814,7 +836,7 @@ public static function bulkEditableSelectField(array $metaField, string $metaKey
814
836
'name ' => __ ('Attachment ' , 'layered ' ),
815
837
'type ' => 'integer ' ,
816
838
'renderValue ' => function ($ metaValue ) {
817
- return get_post ($ metaValue );
839
+ return $ metaValue ? get_post ($ metaValue ) : null ;
818
840
},
819
841
'renderReadable ' => function ($ metaValue ) {
820
842
return $ metaValue ? wp_get_attachment_image ($ metaValue ->ID , [50 , 50 ], strpos ($ metaValue ->post_mime_type , 'image ' ) === false , ['class ' => 'attachment-preview ' ]) : '' ;
0 commit comments