Ημερομηνία έναρξης, ημερομηνία λήξης, Metabox για συμβάντα προσαρμοσμένων τύπων δημοσιεύσεων

Αποσπάσματα από το IsItWP


Θέλετε να προσθέσετε τρία metaboxes στους προσαρμοσμένους τύπους αναρτήσεων των συμβάντων σας; Ενώ υπάρχει πιθανώς μια προσθήκη για αυτό, έχουμε δημιουργήσει ένα γρήγορο απόσπασμα κώδικα που μπορείτε να χρησιμοποιήσετε για να προσθέσετε ημερομηνία έναρξης, ημερομηνία λήξης και μετα-πλαίσιο τοποθεσίας για προσαρμοσμένους τύπους δημοσιεύσεων συμβάντων.

Οδηγίες:

Το μόνο που έχετε να κάνετε είναι να προσθέσετε αυτόν τον κώδικα στο αρχείο functions.php του θέματός σας ή σε μια προσθήκη για συγκεκριμένο ιστότοπο:

συνάρτηση ep_eventposts_metaboxes () {
add_meta_box (‘ept_event_date_start’, ‘Ημερομηνία και ώρα έναρξης’, ‘ept_event_date’, ‘event’, ‘side’, ‘default’, array (‘id’ => “_start”));
add_meta_box (‘ept_event_date_end’, ‘Date and Time End’, ‘ept_event_date’, ‘event’, ‘side’, ‘default’, array (‘id’ =)>’_τέλος’) );
add_meta_box (‘ept_event_location’, ‘Τοποθεσία συμβάντος’, ‘ept_event_location’, ‘event’, ‘side’, ‘default’, array (‘id’ =>’_τέλος’) );
}
add_action (‘admin_init’, ‘ep_eventposts_metaboxes’);

// Metabox HTML

συνάρτηση ept_event_date ($ post, $ args) {
$ metabox_id = $ args [‘args’] [‘id’];
καθολική ανάρτηση $, $ wp_locale;

// Χρησιμοποιήστε το nonce για επαλήθευση
wp_nonce_field (όνομα_προσθήκης (__FILE__), ‘ep_eventposts_nonce’);

$ time_adj = current_time (‘χρονική σήμανση’);
$ μήνα = get_post_meta ($ post->ID, $ metabox_id. “_month”, αληθινό);

εάν (άδειο ($ μήνα)) {
$ μήνα = gmdate (‘m’, $ time_adj);
}

$ day = get_post_meta ($ ανάρτηση->ID, $ metabox_id. “_day”, αληθινό);

εάν (κενό ($ ημέρα)) {
$ day = gmdate (‘d’, $ time_adj);
}

$ έτος = get_post_meta ($ post->ID, $ metabox_id. “_year”, αληθινό);

εάν (κενό ($ έτος)) {
$ έτος = gmdate (‘Y’, $ time_adj);
}

$ hour = get_post_meta ($ ανάρτηση->ID, $ metabox_id. “_hour”, αληθινό);

αν (κενό (ώρα $)) {
$ hour = gmdate (‘H’, $ time_adj);
}

$ min = get_post_meta ($ ανάρτηση->ID, $ metabox_id. “_minute”, αληθινό);

αν (κενό ($ min)) {
$ min = ’00’;
}

$ month_s = “;
για ($ i = 1; $ i < 13; $ i = $ i +1) {
$ μήνα_s. = "\ t \ t \ t" . “. $ wp_locale->get_month_abbrev ($ wp_ τοπική κλίμακα->get_month ($ i)) . "\ n";
}
$ month_s. = “;

ηχώ $ month_s;
ηχώ ”;
ηχώ ‘ @ ‘;
ηχώ ‘:’;
ηχώ ”;

}

συνάρτηση ept_event_location () {
καθολική ανάρτηση $;
// Χρησιμοποιήστε το nonce για επαλήθευση
wp_nonce_field (όνομα_προσθήκης (__FILE__), ‘ep_eventposts_nonce’);
// Το μετα-πλαίσιο HTML
$ event_location = get_post_meta ($ ανάρτηση->Αναγνωριστικό, “_event_location”, true);
ηχοεντοπισμό:’;
ηχώ ”;
}

// Αποθηκεύστε τα δεδομένα Metabox

συνάρτηση ep_eventposts_save_meta ($ post_id, $ post) {

εάν (ορίζεται («DOING_AUTOSAVE») && ΠΡΑΓΜΑ_ΑΥΤΟΛΟΓΙΑ)
ΕΠΙΣΤΡΟΦΗ;

εάν (! Isset ($ _POST [‘ep_eventposts_nonce’]))
ΕΠΙΣΤΡΟΦΗ;

εάν (! wp_verify_nonce ($ _POST [‘ep_eventposts_nonce’], plugin_basename (__FILE__)))
ΕΠΙΣΤΡΟΦΗ;

// Επιτρέπεται στον χρήστη να επεξεργαστεί την ανάρτηση ή τη σελίδα?
αν (! current_user_can (‘edit_post’, $ post->ID))
ΕΠΙΣΤΡΟΦΗ;

// Εντάξει, έχουμε πιστοποιηθεί: πρέπει να βρούμε και να αποθηκεύσουμε τα δεδομένα
// Θα το βάλουμε σε έναν πίνακα για να κάνουμε ευκολότερο το βρόχο

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

foreach ($ metabox_ids ως κλειδί $) {
$ events_meta [κλειδί $. “_month”] = $ _POST [κλειδί $. ‘_μήνας’];
$ events_meta [κλειδί $. “_day”] = $ _POST [κλειδί $. ‘_ημέρα’];
εάν ($ _ POST [κλειδί $. “_hour”]<10) {
$ events_meta [κλειδί $. ‘_hour’] = ‘0’. $ _ POST [κλειδί $. ‘_ώρα’];
} αλλιώς {
$ events_meta [κλειδί $. “_hour”] = $ _POST [κλειδί $. ‘_ώρα’];
}
$ events_meta [κλειδί $. “_year”] = $ _POST [κλειδί $. ‘_έτος’];
$ events_meta [κλειδί $. “_hour”] = $ _POST [κλειδί $. ‘_ώρα’];
$ events_meta [κλειδί $. ‘_minute’] = $ _POST [κλειδί $. ‘_λεπτό’];
$ events_meta [κλειδί $. ‘_eventtimestamp’] = $ events_meta [κλειδί $. «_έτος»]. $ events_meta [κλειδί $. “_month”]. $ events_meta [κλειδί $. ‘_ημέρα’] . $ events_meta [κλειδί $. “_ωρίς”]. $ events_meta [κλειδί $. ‘_λεπτό’];
}

// Προσθέστε τιμές $ events_meta ως προσαρμοσμένα πεδία

foreach ($ events_meta ως $ key => $ value) {// Μεταβείτε στον πίνακα $ events_meta!
αν ($ post->post_type == ‘revision’) επιστροφή; // Μην αποθηκεύετε προσαρμοσμένα δεδομένα δύο φορές
$ value = implode (‘,’, (array) $ value); // Εάν η τιμή $ είναι πίνακας, κάντε το CSV (απίθανο)
εάν (get_post_meta ($ post->Αναγνωριστικό, κλειδί $, FALSE)) {// Εάν το προσαρμοσμένο πεδίο έχει ήδη μια τιμή
update_post_meta (ανάρτηση $->Αναγνωριστικό, κλειδί $, τιμή $);
} αλλιώς {// Εάν το προσαρμοσμένο πεδίο δεν έχει τιμή
add_post_meta (ανάρτηση $->Αναγνωριστικό, κλειδί $, τιμή $);
}
εάν (! $ value) delete_post_meta ($ post->ID, κλειδί $); // Διαγραφή εάν είναι κενό
}

}

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

/ **
* Βοηθοί για την εμφάνιση της ημερομηνίας στη διεπαφή
* /

// Λάβετε τη συντομογραφία του μήνα

function eventposttype_get_the_month_abbr ($ μήνα) {
παγκόσμιο $ wp_locale;
για ($ i = 1; $ i < 13; $ i = $ i +1) {
εάν ($ i == $ μήνα)
$ monthabbr = $ wp_locale->get_month_abbrev ($ wp_ τοπική κλίμακα->get_month ($ i));
}
επιστροφή $ monthabbr;
}

// Εμφάνιση της ημερομηνίας

function eventposttype_get_the_event_date () {
καθολική ανάρτηση $;
$ eventdate = “;
$ μήνα = get_post_meta ($ post->Αναγνωριστικό, “_month”, true);
$ eventdate = eventposttype_get_the_month_abbr ($ μήνα);
$ eventdate. = “. get_post_meta ($ ανάρτηση->Αναγνωριστικό, “_day”, true). “,”;
$ eventdate. = “. get_post_meta ($ ανάρτηση->Αναγνωριστικό, “_year”, true);
$ eventdate. = ‘at’. get_post_meta ($ ανάρτηση->Αναγνωριστικό, “_hour”, true);
$ eventdate. = ‘:’. get_post_meta ($ ανάρτηση->Αναγνωριστικό, “_minute”, true);
echo $ eventdate;
}

Σημείωση: Εάν αυτή είναι η πρώτη φορά που προσθέτετε αποσπάσματα κώδικα στο WordPress, ανατρέξτε στον οδηγό μας στο πώς να αντιγράψετε σωστά / επικολλήσετε αποσπάσματα κώδικα στο WordPress, ώστε να μην σπάσετε κατά λάθος τον ιστότοπό σας.

Εάν σας άρεσε αυτό το απόσπασμα κώδικα, σκεφτείτε το ενδεχόμενο να δείτε τα άλλα άρθρα μας στον ιστότοπο όπως: 15 καλύτερα εργαλεία μάρκετινγκ περιεχομένου και προσθήκες και 50+ καλύτερα ανταποκρινόμενα θέματα WordPress για να δημιουργήσετε έναν ιστότοπο έτοιμο για κινητά.

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