Data de início, Data de término, Metabox para tipos de postagem personalizados para eventos

Snippets por IsItWP


Deseja adicionar três metaboxes aos tipos de postagem personalizados dos seus eventos? Embora haja provavelmente um plug-in para isso, criamos um snippet de código rápido que você pode usar para adicionar metabox de data de início, data de término e local para tipos personalizados de postagem de eventos.

Instruções:

Tudo o que você precisa fazer é adicionar esse código ao arquivo functions.php do seu tema ou em um plug-in específico do site:

função ep_eventposts_metaboxes () {
add_meta_box (‘ept_event_date_start’, ‘Data e hora de início’, ‘ept_event_date’, ‘evento’, ‘lado’, ‘padrão’, matriz (‘id’ => ‘_start’));
add_meta_box (‘ept_event_date_end’, ‘Data e hora de término’, ‘ept_event_date’, ‘evento’, ‘lado’, ‘padrão’, matriz (‘id’ =>’_fim’) );
add_meta_box (‘ept_event_location’, ‘Local do evento’, ‘ept_event_location’, ‘evento’, ‘lado’, ‘padrão’, matriz (‘id’ =>’_fim’) );
}
add_action (‘admin_init’, ‘ep_eventposts_metaboxes’);

// Metabox HTML

função ept_event_date ($ post, $ args) {
$ metabox_id = $ args [‘args’] [‘id’];
global $ post, $ wp_locale;

// Use nonce para verificação
wp_nonce_field (plugin_basename (__FILE__), ‘ep_eventposts_nonce’);

$ time_adj = hora atual (‘timestamp’);
$ mês = get_post_meta ($ post->ID, $ metabox_id. ‘_month’, true);

if (vazio ($ mês)) {
$ mês = gmdate (‘m’, $ time_adj);
}

$ day = get_post_meta ($ postagem->ID, $ metabox_id. ‘_dia’, verdadeiro);

if (vazio ($ dia)) {
$ dia = gmdate (‘d’, $ time_adj);
}

$ ano = get_post_meta ($ postagem->ID, $ metabox_id. ‘_ano’, verdadeiro);

if (vazio ($ ano)) {
$ ano = gmdate (‘Y’, $ time_adj);
}

$ hour = get_post_meta ($ postagem->ID, $ metabox_id. ‘_hora’, verdadeiro);

if (vazio ($ hora)) {
$ hora = gmdate (‘H’, $ time_adj);
}

$ min = get_post_meta ($ postagem->ID, $ metabox_id. ‘_minute’, verdadeiro);

if (vazio ($ min)) {
$ min = ’00’;
}

$ mês_s = ”;
para ($ i = 1; $ i < 13; $ i = $ i +1) {
$ month_s. = "\ t \ t \ t" . ”. $ wp_locale->get_month_abbrev ($ wp_locale->get_month ($ i)) . "\ n";
}
$ mês_s. = ”;

eco $ month_s;
eco ”;
echo ‘@’;
eco ‘:’;
eco ”;

}

função ept_event_location () {
global $ post;
// Use nonce para verificação
wp_nonce_field (plugin_basename (__FILE__), ‘ep_eventposts_nonce’);
// O metabox HTML
$ event_location = get_post_meta ($ post->ID, ‘_local_do_evento’, verdadeiro);
echo ‘Location:’;
eco ”;
}

// Salve os dados da Metabox

função ep_eventposts_save_meta ($ post_id, $ post) {

if (definido (‘DOING_AUTOSAVE’) && DOING_AUTOSAVE)
Retorna;

if (! isset ($ _POST [‘ep_eventposts_nonce’])))
Retorna;

if (! wp_verify_nonce ($ _POST [‘ep_eventposts_nonce’]], plugin_basename (__FILE__))))
Retorna;

// O usuário tem permissão para editar a postagem ou a página?
if (! current_user_can (‘edit_post’, $ post->EU IRIA ) )
Retorna;

// OK, estamos autenticados: precisamos encontrar e salvar os dados
// Vamos colocá-lo em uma matriz para facilitar o loop

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

foreach ($ metabox_ids como $ key) {
$ events_meta [chave $. ‘_month’] = $ _POST [chave $. ‘_mês’];
$ events_meta [chave $. ‘_day’] = $ _POST [chave $. ‘_dia’];
if ($ _ POST [$ key. ‘_hour’]<10) {
$ events_meta [chave $. ‘_hour’] = ‘0’. $ _ POST [chave $. ‘_hora’];
} outro {
$ events_meta [chave $. ‘_hour’] = $ _POST [chave $. ‘_hora’];
}
$ events_meta [chave $. ‘_ano’] = $ _POST [chave $. ‘_ano’];
$ events_meta [chave $. ‘_hour’] = $ _POST [chave $. ‘_hora’];
$ events_meta [chave $. ‘_minute’] = $ _POST [chave $. ‘_minuto’];
$ events_meta [chave $. ‘_eventtimestamp’] = $ events_meta [chave de $. ‘_ano’]. $ events_meta [chave $. ‘_month’]. $ events_meta [chave $. ‘_dia’] . $ events_meta [chave $. ‘_hor’]. $ events_meta [chave $. ‘_minuto’];
}

// Adicione valores de $ events_meta como campos personalizados

foreach ($ events_meta como $ key => $ value) {// Percorre a matriz $ events_meta!
if ($ post->post_type == ‘revisão’) return; // Não armazene dados personalizados duas vezes
$ valor = implode (‘,’, (matriz) $ valor); // Se $ value for um array, torne-o um CSV (improvável)
if (get_post_meta ($ post->ID, chave $, FALSE)) {// Se o campo personalizado já tiver um valor
update_post_meta ($ post->ID, chave $, valor $);
} else {// Se o campo personalizado não tiver um valor
add_post_meta ($ post->ID, chave $, valor $);
}
if (! $ value) delete_post_meta ($ post->ID, chave $); // Excluir se estiver em branco
}

}

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

/ **
* Ajudantes para exibir a data no front-end
* /

// Obter a abreviação do mês

função eventposttype_get_the_month_abbr ($ month) {
global $ wp_locale;
para ($ i = 1; $ i < 13; $ i = $ i +1) {
if ($ i == $ mês)
$ monthabbr = $ wp_locale->get_month_abbrev ($ wp_locale->get_month ($ i));
}
return $ monthabbr;
}

// Exibe a data

função eventposttype_get_the_event_date () {
global $ post;
$ eventdate = ”;
$ mês = get_post_meta ($ post->ID, ‘_mês’, verdadeiro);
$ eventdate = eventposttype_get_the_month_abbr ($ mês);
$ eventdate. = ”. get_post_meta ($ post->ID, ‘_dia’, verdadeiro). ‘,’;
$ eventdate. = ”. get_post_meta ($ post->ID, ‘_ano’, verdadeiro);
$ eventdate. = ‘at’. get_post_meta ($ post->ID, ‘_ hora’, verdadeiro);
$ eventdate. = ‘:’. get_post_meta ($ post->ID, ‘_minute’, verdadeiro);
echo $ eventdate;
}

Nota: Se é a primeira vez que você adiciona trechos de código no WordPress, consulte nosso guia em como copiar / colar corretamente trechos de código no WordPress, para que você não quebre seu site acidentalmente.

Se você gostou desse trecho de código, considere conferir nossos outros artigos no site, como: 15 melhores ferramentas e plug-ins de marketing de conteúdo e mais de 50 melhores temas responsivos do WordPress para criar um site pronto para celular.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map