Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Notes regarding the WP event manager
<?php
/*
Target:
*******
Perfect solution for a simple WP event manager
Needs:
******
- we want the event dates to be linked to a normal WP post (or custom post type), so
that we have access to all other features, without any further work (be able to
attach images and documents, be able to use categories, taxonomies, custom fields,
featured images...).
- we want the plugin to be localizable in multiple languages.
- we should be able to restrict this function to a specific Custom Post Type, if we
want to. It's not necessary to have an admin interface for this, it's OK to paste
some code in our functions.php file.
Our idea for the implementation:
*********************************
- We will simply use custom fields, in order to save date and time in such a format:
2012-10-29 13:00. This will allow us to run specific queries and display the date
how we want, using strtotime() and date_i18n().
- The design of the date-picker should be similar to the one that WP uses for the
publishing date. This keeps the interface clean and easy to understand.
Important:
************
- We must have the option to show the time (or not), to show the end date (or not).
## RELATED: ##
**************
http://wordpress.stackexchange.com/questions/175/marking-future-dated-post-as-published
If you set the meta_value as a timestamp, you can order by the show time date still,
or select before / after a certain date:
*/
$args = array(
'post_type' => 'events',
'meta_key' => '_show_time',
'meta_value' => strtotime( '+1 week' ),
'meta_compare' => '<',
'orderby' => 'meta_value' );
$events = get_posts( $args );
/*
This would get all "events" with a showtime no later then a week from the current date.
Note: The above is untested, but should work :)
### About meta_compare ###
**************************
Some good information about the meta_compare query:
http://core.trac.wordpress.org/ticket/9124
*/
query_posts( array(
'post_type' => 'beer', // Show posts from the beer post type
'paged' => $paged,
'meta_query' => array(
array(
'meta_key' => '_abv',
'meta_compare' => 'BeTwEeN',
'meta_value' => array(6,8)
),
array(
'meta_key' => '_ibu',
'meta_compare' => '>',
'meta_value' => 50
),
)
) );
/*
Another example, by Scribu:
http://scribu.net/wordpress/advanced-metadata-queries.html
Get all the products with a price greater than 100:
*/
query_posts( array(
'post_type' => 'product',
'meta_key' => 'price',
'meta_value' => 100,
'meta_compare' => '>'
) );
// Get all the products with a price between 100 and 200 and a description that
// doesn’t contain the string ’round’:
query_posts( array(
'post_type' => 'product',
'meta_query' => array(
array(
'key' => 'price',
'value' => array( 100, 200 ),
'compare' => 'BETWEEN',
'type' => 'numeric',
),
array(
'key' => 'description',
'value' => 'round',
'compare' => 'NOT LIKE'
)
)
) );
/*
SEE ALSO:
http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters
**************
## Some examples of strtotime() and date() ##
06-10-2011 14:28
// 6 october 2011 2:28 pm
see :
http://php.net/manual/fr/function.strtotime.php
The strtotime() function parses an English textual date or time into a Unix timestamp
(the number of seconds since January 1 1970 00:00:00 GMT).
*/
$date = "2011-10-05 14:28";
echo $stamp = strtotime($date) . "<br />"; // outputs 1317904080
echo date("d-m", $stamp); //
/*
WP-Date picker
## CODE ANALYSIS: ##
*******************
the relevant code for post dates is here:
/wp-admin/includes/meta-boxes.php
*/
?>
<div class="misc-pub-section curtime misc-pub-section-last">
<span id="timestamp">
<?php printf($stamp, $date); ?></span>
<a href="#edit_timestamp" class="edit-timestamp hide-if-no-js" tabindex='4'><?php _e('Edit') ?></a>
<div id="timestampdiv" class="hide-if-js"><?php touch_time(($action == 'edit'),1,4); ?></div>
</div>
<?php
/*
NOTE: the function touch_time() does generate the time picker.
this function is located in
/includes/template.php
*/
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.