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

<?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 ];
}
}