field, array(
'placeholder' => '',
'chosen' => false,
'multiple' => false,
'sortable' => false,
'ajax' => false,
'settings' => array(),
'query_args' => array(),
));
$this->value = (is_array($this->value)) ? $this->value : array_filter((array) $this->value);
echo $this->field_before();
if (isset($this->field['options'])) {
if (!empty($args['ajax'])) {
$args['settings']['data']['type'] = $args['options'];
$args['settings']['data']['nonce'] = wp_create_nonce('csf_chosen_ajax_nonce');
if (!empty($args['query_args'])) {
$args['settings']['data']['query_args'] = $args['query_args'];
}
}
$chosen_rtl = (is_rtl()) ? ' chosen-rtl' : '';
$multiple_name = ($args['multiple']) ? '[]' : '';
$multiple_attr = ($args['multiple']) ? ' multiple="multiple"' : '';
$chosen_sortable = ($args['chosen'] && $args['sortable']) ? ' csf-chosen-sortable' : '';
$chosen_ajax = ($args['chosen'] && $args['ajax']) ? ' csf-chosen-ajax' : '';
$placeholder_attr = ($args['chosen'] && $args['placeholder']) ? ' data-placeholder="' . esc_attr($args['placeholder']) . '"' : '';
$field_class = ($args['chosen']) ? ' class="csf-chosen' . esc_attr($chosen_rtl . $chosen_sortable . $chosen_ajax) . '"' : '';
$field_name = $this->field_name($multiple_name);
$field_attr = $this->field_attributes();
$maybe_options = $this->field['options'];
$chosen_data_attr = ($args['chosen'] && !empty($args['settings'])) ? ' data-chosen-settings="' . esc_attr(json_encode($args['settings'])) . '"' : '';
if (is_string($maybe_options) && !empty($args['chosen']) && !empty($args['ajax'])) {
$options = $this->field_wp_query_data_title($maybe_options, $this->value);
} else if (is_string($maybe_options)) {
$options = $this->field_data($maybe_options, false, $args['query_args']);
} else {
$options = $maybe_options;
}
if ((is_array($options) && !empty($options)) || (!empty($args['chosen']) && !empty($args['ajax']))) {
if (!empty($args['chosen']) && !empty($args['multiple'])) {
echo '';
$field_name = '_pseudo';
$field_attr = '';
}
// These attributes has been serialized above.
echo '';
} else {
echo (!empty($this->field['empty_message'])) ? esc_attr($this->field['empty_message']) : esc_html__('No data available.', 'csf');
}
}
echo $this->field_after();
}
public function enqueue()
{
if (!wp_script_is('jquery-ui-sortable')) {
wp_enqueue_script('jquery-ui-sortable');
}
}
}
}