Απο Evangelos Athanasiadis
Advanced Date Queries στο WordPress 3.7
Όπως ήδη θα έχετε διαβάσει οι περισσότεροι, σύντομα θα έχουμε την επόμενη έκδοση του WordPress 3.7 και ένα νέο χαρακτηριστικό που φέρνει η νέα έκδοση είναι το Advanced Date Queries ή Προχωρημένα ερωτήματα ημερομηνιών.
Τι είναι αυτό το νέο χαρακτηριστικό και τι θα αλλάξει; θα ξεκινήσω από το δεύτερο δεν θα αλλάξει τίποτα σε όσα γνωρίζουμε και βλέπουμε, προχωρώντας στο πρώτο ερώτημα, είναι μια νέα προσθήκη-επέκταση της συνάρτησης WP_Query() να έχουμε και δυνατότητα ημερομηνιών στα ερωτήματα. Αναλύοντας περισσότερο θα αναφέρω ότι με την νέα δυνατότητα μπορούμε να ορίσουμε χρονικά διαστήματα, μετά από κάποια ημερομηνία, ώρες της ημέρας κλπ. Παράδειγμα:
- Ερώτημα όλων των δημοσιεύσεων που γράφτηκαν σε μια συγκεκριμένη ημερομηνία.
- Ερώτημα όλων των δημοσιεύσεων που γράφτηκαν πριν ή μετά από μια συγκεκριμένη ημερομηνία.
- Ερώτημα όλων των δημοσισιεύσεων που γράφτηκαν τα πρωϊνά της πέμπτης (Ημέρα Πέμπτη).
- Ερώτημα όλων των δημοσισιεύσεων που γράφτηκαν μετά τα μεσάνυχτα και πρίν τις 6 πμ.
Μπορείτε να δείτε όλες τις παραμέτρους ημερομηνίας στο codex και να δείτε μερικά παραδείγματα. Τα προχωρημένα ερωτήματα ημερομηνιών θα δώσουν την δυνατότητα στους δημιουργούς πρόσθετων ή θεμάτων να δημιουργήσουν προσαρμοσμένα ιστορικά, τυχαία άρθρα με συγκεκριμένες ημερομηνία και οτιδήποτε μπορεί να χρειαστεί ή να φανταστεί κανείς με την χρήση ημερομηνιών όπως τα παρακάτων παραδείγματα.
[cc lang="php"]
// Get the 10 most recent posts made
// between 9AM and 5PM on weekdays
$some_posts = new WP_Query( array(
'date_query' => array(
array(
'hour' => 9,
'compare' => '>=',
),
array(
'hour' => 17,
'compare' => '<=',
),
array(
'dayofweek' => array( 2, 6 ),
'compare' => 'BETWEEN',
),
),
'posts_per_page' => 10,
) );
// Get all posts from this summer
// June 1st to August 31st, inclusive
// Note that strtotime()-compatible strings can be used
$some_posts = new WP_Query( array(
'date_query' => array(
array(
// String via strtotime()
'after' => 'June 1st, 2013',
// Or if you want, an array
'before' => array(
'year' => 2013,
'month' => 8,
'day' => 31,
),
'inclusive' => true,
),
),
'posts_per_page' => -1,
) );
// Any posts made over a year ago
// but modified in the past month
$some_posts = new WP_Query( array(
'date_query' => array(
array(
'column' => 'post_date_gmt',
'before' => '1 year ago',
),
array(
'column' => 'post_modified_gmt',
'after' => '1 month ago',
)
),
'posts_per_page' => -1,
) );
[/cc]