Дата начала, Дата окончания, Метабокс для событий Пользовательские типы сообщений

Фрагменты от IsItWP


Вы хотите добавить три метабокса к вашим событиям пользовательских типов сообщений? Хотя, возможно, для этого есть плагин, мы создали небольшой фрагмент кода, который вы можете использовать для добавления даты начала, даты окончания и метабокса местоположения для пользовательских типов сообщений..

Инструкции:

Все, что вам нужно сделать, это добавить этот код в файл functions.php вашей темы или в плагин для конкретного сайта:

function ep_eventposts_metaboxes () {
add_meta_box («ept_event_date_start», «Дата и время начала», «ept_event_date», «событие», «сторона», «по умолчанию», массив («id» => ‘_Начните’) );
add_meta_box («ept_event_date_end», «Дата и время окончания», «ept_event_date», «событие», «сторона», «по умолчанию», массив («id» =>’_конец’) );
add_meta_box (‘ept_event_location’, ‘Event Location’, ‘ept_event_location’, ‘event’, ‘side’, ‘default’, array (‘id’ =>’_конец’) );
}
add_action (‘admin_init’, ‘ep_eventposts_metaboxes’);

// Metabox HTML

function ept_event_date ($ post, $ args) {
$ metabox_id = $ args [‘args’] [‘id’];
глобальный $ post, $ wp_locale;

// Используем nonce для проверки
wp_nonce_field (plugin_basename (__FILE__), ‘ep_eventposts_nonce’);

$ time_adj = current_time (‘timestamp’);
$ month = get_post_meta ($ post->ID, $ metabox_id. «_month», правда);

if (пусто ($ month)) {
$ month = gmdate (‘m’, $ time_adj);
}

$ day = get_post_meta ($ post->ID, $ metabox_id. «_day», правда);

if (пусто ($ day)) {
$ day = gmdate (‘d’, $ time_adj);
}

$ year = get_post_meta ($ post->ID, $ metabox_id. ‘_year’, правда);

if (пусто ($ year)) {
$ year = gmdate (‘Y’, $ time_adj);
}

$ hour = get_post_meta ($ post->ID, $ metabox_id. ‘_hour’, правда);

if (пусто ($ час)) {
$ hour = gmdate (‘H’, $ time_adj);
}

$ min = get_post_meta ($ post->ID, $ metabox_id. «_minute», правда);

if (пусто ($ min)) {
$ min = ’00’;
}

$ month_s = ”;
для ($ i = 1; $ i < 13; $ i = $ i +1) {
$ month_s. = "\ Т \ т \ т" . ”. $ wp_locale->get_month_abbrev ($ wp_locale->get_month ($ i)) . "\ п";
}
$ month_s. = ”;

echo $ month_s;
эхо ”;
эхо ‘@’;
echo ‘:’;
эхо ”;

}

function ept_event_location () {
глобальный $ post;
// Используем nonce для проверки
wp_nonce_field (plugin_basename (__FILE__), ‘ep_eventposts_nonce’);
// метабокс HTML
$ event_location = get_post_meta ($ post->ID, ‘_event_location’, true);
echo ‘Location:’;
эхо ”;
}

// Сохраняем данные метабокса

function ep_eventposts_save_meta ($ post_id, $ post) {

если (определено (‘DOING_AUTOSAVE’) && DOING_AUTOSAVE)
возвращение;

if (! isset ($ _POST [‘ep_eventposts_nonce’]))
возвращение;

if (! wp_verify_nonce ($ _POST [‘ep_eventposts_nonce’], plugin_basename (__FILE__))))
возвращение;

// Разрешено ли пользователю редактировать сообщение или страницу?
if (! current_user_can (‘edit_post’, $ post->Я БЫ ) )
возвращение;

// ОК, мы аутентифицированы: нам нужно найти и сохранить данные
// Мы поместим его в массив, чтобы сделать цикл проще

$ metabox_ids = array (‘_start’, ‘_end’);

foreach ($ metabox_ids как $ key) {
$ events_meta [$ key. ‘_month’] = $ _POST [$ key. ‘_месяц’];
$ events_meta [$ key. ‘_day’] = $ _POST [$ key. ‘_день’];
if ($ _ POST [$ key. ‘_hour’]<10) {
$ events_meta [$ key. ‘_hour’] = ‘0’. $ _ POST [$ key. ‘_час’];
} еще {
$ events_meta [$ key. ‘_hour’] = $ _POST [$ key. ‘_час’];
}
$ events_meta [$ key. ‘_year’] = $ _POST [$ key. ‘_год’];
$ events_meta [$ key. ‘_hour’] = $ _POST [$ key. ‘_час’];
$ events_meta [$ key. ‘_minute’] = $ _POST [$ key. ‘_Minute’];
$ events_meta [$ key. ‘_eventtimestamp’] = $ events_meta [$ key. ‘_year’]. $ events_meta [$ key. “_month”]. $ events_meta [$ key. ‘_day’]. $ events_meta [$ key. ‘_hour’]. $ events_meta [$ key. ‘_Minute’];
}

// Добавить значения $ events_meta в качестве пользовательских полей

foreach ($ events_meta как $ key => $ value) {// Цикл по массиву $ events_meta!
if ($ post->post_type == ‘revision’) return; // Не храните пользовательские данные дважды
$ value = implode (‘,’, (array) $ value); // Если $ value является массивом, сделать его CSV (маловероятно)
if (get_post_meta ($ post->ID, $ key, FALSE)) {// Если в настраиваемом поле уже есть значение
update_post_meta ($ post->ID, $ ключ, $ значение);
} else {// Если пользовательское поле не имеет значения
add_post_meta ($ post->ID, $ ключ, $ значение);
}
if (! $ value) delete_post_meta ($ post->ID, $ ключ); // Удалить если пусто
}

}

add_action (‘save_post’, ‘ep_eventposts_save_meta’, 1, 2);

/ **
* Помощники для отображения даты на переднем конце
* /

// Получить сокращение месяца

function eventposttype_get_the_month_abbr ($ month) {
global $ wp_locale;
для ($ i = 1; $ i < 13; $ i = $ i +1) {
если ($ i == $ месяц)
$ monthabbr = $ wp_locale->get_month_abbrev ($ wp_locale->get_month ($ i));
}
вернуть $ monthabbr;
}

// Показать дату

function eventposttype_get_the_event_date () {
глобальный $ post;
$ eventdate = ”;
$ month = get_post_meta ($ post->ID, _month, true);
$ eventdate = eventposttype_get_the_month_abbr ($ month);
$ eventdate. = ”. get_post_meta ($ пост->ID, ‘_day’, правда). ”;
$ eventdate. = ”. get_post_meta ($ пост->ID, ‘_year’, правда);
$ eventdate. = ‘at’. get_post_meta ($ пост->ID, ‘_hour’, правда);
$ eventdate. = ‘:’. get_post_meta ($ пост->ID, «_minute», верно);
echo $ eventdate;
}

Замечания: Если вы впервые добавляете фрагменты кода в WordPress, обратитесь к нашему руководству на как правильно копировать / вставлять фрагменты кода в WordPress, так что вы случайно не сломаете свой сайт.

Если вам понравился этот фрагмент кода, рассмотрите другие наши статьи на сайте, например: 15 лучших инструментов контент-маркетинга и плагинов и более 50 лучших адаптивных тем WordPress для создания веб-сайта, готового для мобильных устройств..

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me