You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.1 KiB
45 lines
1.1 KiB
9 months ago
|
<?php
|
||
|
/**
|
||
|
* Field helper functions.
|
||
|
*/
|
||
|
class RWMB_Helpers_Field {
|
||
|
/**
|
||
|
* Localize a script only once.
|
||
|
* @link https://github.com/rilwis/meta-box/issues/850
|
||
|
*/
|
||
|
public static function localize_script_once( string $handle, string $name, array $data ) {
|
||
|
if ( ! wp_scripts()->get_data( $handle, 'data' ) ) {
|
||
|
wp_localize_script( $handle, $name, $data );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static function add_inline_script_once( string $handle, string $text ) {
|
||
|
if ( ! wp_scripts()->get_data( $handle, 'after' ) ) {
|
||
|
wp_add_inline_script( $handle, $text );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static function get_class( $field ) : string {
|
||
|
$type = self::get_type( $field );
|
||
|
$class = 'RWMB_' . RWMB_Helpers_String::title_case( $type ) . '_Field';
|
||
|
$class = apply_filters( 'rwmb_field_class', $class, $type );
|
||
|
return class_exists( $class ) ? $class : 'RWMB_Input_Field';
|
||
|
}
|
||
|
|
||
|
private static function get_type( $field ) : string {
|
||
|
$type = $field['type'] ?? 'text';
|
||
|
$map = array_merge(
|
||
|
[
|
||
|
$type => $type,
|
||
|
],
|
||
|
[
|
||
|
'file_advanced' => 'media',
|
||
|
'plupload_image' => 'image_upload',
|
||
|
'url' => 'text',
|
||
|
]
|
||
|
);
|
||
|
|
||
|
return $map[ $type ];
|
||
|
}
|
||
|
}
|