Data de început, Data de încheiere, Metabox pentru evenimente Tipuri de postare personalizate

Snippets de IsItWP


Doriți să adăugați trei metaboxuri la tipurile dvs. de postări personalizate? Cu toate că există probabil un plugin pentru acest lucru, am creat un fragment de cod rapid pe care îl puteți utiliza pentru a adăuga data de început, data de încheiere și locația metabox pentru evenimente tipuri de postare personalizate.

Instrucțiuni:

Tot ce trebuie să faceți este să adăugați acest cod în fișierul funcției.php al temei sau într-un plugin specific site-ului:

function ep_eventposts_metaboxes () {
add_meta_box (‘ept_event_date_start’, ‘Data și ora de început’, ‘ept_event_date’, ‘eveniment’, ‘side’, ‘implicit’, array (‘id’ => ‘_start’) );
add_meta_box (‘ept_event_date_end’, ‘Data și ora de încheiere’, ‘ept_event_date’, ‘eveniment’, ‘side’, ‘implicit’, array (‘id’ =>’_Sfârșit’) );
add_meta_box (‘ept_event_location’, ‘Locația evenimentului’, ‘ept_event_location’, ‘eveniment’, ‘side’, ‘default’, array (‘id’ =>’_Sfârșit’) );
}
add_action (‘admin_init’, ‘ep_eventposts_metaboxes’);

// Metabox HTML

function ept_event_date ($ post, $ args) {
$ metabox_id = $ args [‘args’] [‘id’];
postare globală $, $ wp_locale;

// Utilizați nonce pentru verificare
wp_nonce_field (plugin_basename (__FILE__), ‘ep_eventposts_nonce’);

$ time_adj = current_time (‘timestamp’);
$ luna = get_post_meta (postare $->ID, $ metabox_id. ‘_monta’, adevărat);

if (gol (lună $)) {
$ luna = data gmd (‘m’, $ time_adj);
}

$ zi = get_post_meta (postare $->ID, $ metabox_id. ‘_day’, adevărat);

if (gol (zi $)) {
$ day = gmdate (‘d’, $ time_adj);
}

$ an = get_post_meta (postare $->ID, $ metabox_id. ‘_year’, adevărat);

if (gol (an $)) {
$ an = gmdate (‘Y’, $ time_adj);
}

$ hour = get_post_meta (postare $->ID, $ metabox_id. ‘_hour’, adevărat);

if (gol (ora $)) {
$ oră = data gmd (‘H’, $ time_adj);
}

$ min = get_post_meta (postare $->ID, $ metabox_id. ‘_minute’, adevărat);

if (goală ($ min)) {
$ min = ’00’;
}

$ luna_s = ”;
pentru ($ i = 1; $ i < 13; $ i = $ i +1) {
$ lună_s. = "\ T \ t \ t" . ”. $ wp_locale->get_month_abbrev ($ wp_locale->get_month ($ i)) . "\ n";
}
$ lună_s. = ”;

ecou $ luna_s;
ecou ”;
ecou ‘@’;
ecou ‘:’;
ecou ”;

}

function ept_event_location () {
postare globală $;
// Utilizați nonce pentru verificare
wp_nonce_field (plugin_basename (__FILE__), ‘ep_eventposts_nonce’);
// Metabox HTML
$ event_location = get_post_meta ($ post->ID, „_event_location”, adevărat);
ecou „Locație:”;
ecou ”;
}

// Salvați Metabox Data

function ep_eventposts_save_meta ($ post_id, $ post) {

if (definit („DOING_AUTOSAVE”) && DOING_AUTOSAVE)
întoarcere;

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

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

// Utilizatorul are dreptul să editeze postarea sau pagina?
if (! current_user_can (‘edit_post’, $ post->ID))
întoarcere;

// OK, suntem autentificați: trebuie să găsim și să salvăm datele
// Cu toate acestea, îl vom pune într-un tablou pentru a face mai ușor bucla

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

foreach ($ metabox_ids ca cheie $) {
$ events_meta [cheie $. ‘_month’] = $ _POST [cheia $. ‘_lună’];
$ events_meta [cheie $. ‘_day’] = $ _POST [cheia $. ‘_zi’];
if ($ _ POST [cheia $. ‘_hour’]<10) {
$ events_meta [cheie $. ‘_hour’] = ‘0’. $ _ POST [$ cheie. ‘_ora’];
} altfel {
$ events_meta [cheie $. ‘_hour’] = $ _POST [cheia $. ‘_ora’];
}
$ events_meta [cheie $. ‘_year’] = $ _POST [cheia $. ‘_an’];
$ events_meta [cheie $. ‘_hour’] = $ _POST [cheia $. ‘_ora’];
$ events_meta [cheie $. ‘_minute’] = $ _POST [cheia $. ‘_minut’];
$ events_meta [cheie $. ‘_eventtimestamp’] = $ events_meta [cheia $. „_year”]. $ events_meta [cheie $. „_month”]. $ events_meta [cheie $. ‘_day’]. $ events_meta [cheie $. ‘_ora’] . $ events_meta [cheie $. ‘_minut’];
}

// Adăugați valori de $ events_meta ca câmpuri personalizate

foreach ($ events_meta ca $ cheie => $ valoare) {// Parcurgeți matricea $ events_meta!
if ($ post->post_type == ‘revizuire’) retur; // Nu stocați datele personalizate de două ori
$ valoare = implode (‘,’, (tablou) $ valoare); // Dacă valoarea $ este o matrice, faceți-o CSV (puțin probabil)
if (get_post_meta (postare $)->ID, cheie $, FALSE)) {// Dacă câmpul personalizat are deja o valoare
update_post_meta (postare $->ID, cheie $, valoare $);
} else {// Dacă câmpul personalizat nu are o valoare
add_post_meta ($ post->ID, cheie $, valoare $);
}
if (! valoare) $ delete_post_meta ($ post->ID, cheie $); // Ștergeți dacă este necompletat
}

}

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

/ **
* Ajutor pentru a afișa data pe partea frontală
* /

// Obțineți Abreviere pentru lună

function eventposttype_get_the_month_abbr ($ luna) {
global $ wp_locale;
pentru ($ i = 1; $ i < 13; $ i = $ i +1) {
if ($ i == $ luna)
$ monthabbr = $ wp_locale->get_month_abbrev ($ wp_locale->get_month ($ i));
}
returnare $ monthabbr;
}

// Afișați data

function eventposttype_get_the_event_date () {
postare globală $;
$ eventdate = ”;
$ luna = get_post_meta (postare $->ID, „_month”, adevărat);
$ eventdate = eventposttype_get_the_month_abbr ($ luna);
$ eventdate. = ”. get_post_meta ($ post–>ID, „_day”, adevărat). ”;
$ eventdate. = ”. get_post_meta ($ post–>ID, „_year”, adevărat);
$ eventdate. = ‘la’. get_post_meta ($ post–>ID, „_hour”, adevărat);
$ eventdate. = ‘:’. get_post_meta ($ post–>ID, „_minute”, adevărat);
ecou $ eveniment eveniment;
}

Notă: Dacă este prima dată când adăugați fragmente de cod în WordPress, atunci consultați ghidul nostru de pe cum să copiați / lipiți corect fragmente de cod în WordPress, deci nu vă rupeți accidental site-ul.

Dacă v-a plăcut acest fragment de cod, vă rugăm să consultați celelalte articole de pe site-ul nostru, cum ar fi: 15 cele mai bune instrumente și pluginuri de marketing pentru conținut și 50+ teme WordPress care răspund cel mai bine pentru a crea un site web gata pentru mobil.

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