Как получить настраиваемое поле на странице одного события
В этой статье вы узнаете, как получить доступ к пользовательскому полю на странице отдельного события . Данные пользовательских полей события хранятся в метаданных WordPress , и вы можете получить к ним доступ с помощью функции get_post_meta. Пожалуйста, ознакомьтесь со следующим кодом.
Получить настраиваемое поле на странице одного события
$event_id = get_the_ID(); // Or you can get it from request parameters
$data = get_post_meta($event_id, 'mec_fields', true);
print_r($data); // Temporarily print the data to see it
Конфигурация полей
Вам также нужна конфигурация полей
$main = MEC::getInstance('app.libraries.main');
$fields = $main->get_event_fields();
if(!is_array($fields) ) $fields = array();
print_r($fields); // Temporarily print the configuration to see the structure
Имея как $fields, так и $data, вы можете распечатать все поля (или нужные вам поля) на выходе. Проверьте следующий код.
foreach($fields as $field_id => $item) {
// Not a field
if(!is_numeric($field_id)) continue;
// Only display desired fields
if(!in_array($field_id, [1,2,3])) continue;
// Field Data
$result = isset($data[$field_id]) ? $data[$field_id] : NULL;
// Empty Value
if((!is_array($result) and trim($result) == '') or (is_array($result) and !count($result))) continue;
$type = isset($item['type']) ? $item['type'] : 'text';
if(isset($field['label'])) {
echo '<span class="mec-event-data-field-name">'.esc_html__(stripslashes($field['label']), 'mec').': </span>';
}
if($type === 'email') {
echo '<span class="mec-event-data-field-value"><a href="mailto:'.esc_attr($value).'">'.esc_html($value).'</a></span>';
} elseif($type === 'tel') {
echo '<span class="mec-event-data-field-value"><a href="tel:'.esc_attr($value).'">'.esc_html($value).'</a></span>';
} elseif($type === 'url') {
echo '<span class="mec-event-data-field-value"><a href="'.esc_url($value).'" target="_blank">'.esc_html($value).'</a></span>';
} elseif($type === 'date') {
$value = $main->to_standard_date($value);
echo '<span class="mec-event-data-field-value">'.esc_html($this->main->date_i18n($date_format, strtotime($value))).'</span>';
} elseif($type === 'textarea') {
echo '<span class="mec-event-data-field-value">'.wpautop(stripslashes($value)).'</span>';
} else {
echo '<span class="mec-event-data-field-value">'.(is_array($value) ? esc_html(stripslashes(implode(', ', $value))) :
esc_html(stripslashes($value))).'</span>';
}
}