Ich habe mir einen einfaches Event Plugin erstellt.
Per Shortcode möchte ich eine Übersichtsseite erstellen bei klick auf einen Link sollen die Details angezeigt werden.
Ich versucht das mit einem more Tag zu machen. Funktioniert leider nicht.
Hat jemand einen Tipp wie ich die Details anzeigen lassen kann?
Was muss ich noch eintragen, damit der Beitrag auch im Kalender erscheint?
PHP
<?php
/*
Plugin Name: Meine Events
Description: Wandertermine Verwalten
Author: Matthias
Version: 0.0.1
Author URI: http://www.wandernimsaaletal.de
*/
/* Copyright 2013 Matthias Reichert (email : matthias-reichert@mr-73.de)
*/
add_action('init', 'event_register');
function event_register() {
$labels = array(
'name' => _x('Events', 'post type general name'),
'singular_name' => _x('Event', 'post type singular name'),
'add_new' => _x('Add New', 'event'),
'add_new_item' => __('Add New Event'),
'edit_item' => __('Edit Event'),
'new_item' => __('New Event'),
'view_item' => __('View Event'),
'search_items' => __('Search Events'),
'not_found' => __('Nothing found'),
'not_found_in_trash' => __('Nothing found in Trash'),
'parent_item_colon' => ''
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'query_var' => true,
'rewrite' => true,
'capability_type' => 'post',
'hierarchical' => false,
'menu_position' => null,
'supports' => array('title','editor','thumbnail',)
);
register_post_type( 'events' , $args );
}
// Add custom columns to manage posts page
//add a filter and an action to the events custom post type
add_filter('manage_edit-events_columns', 'events_edit_columns');
add_action('manage_posts_custom_column', 'events_custom_columns');
//edit events columns names
function events_edit_columns ($columns) {
$columns = array(
"cb" => "<input type=\"checkbox\" />",
"title" => "Event Name",
"location" => "Location",
"eventdate" => "Datum",
"start" => "Start + Ende",
"eventdate" => "Wann",
"author" => "Autor",
"date" => "Erstellt"
);
return $columns;
}
//edit content for all the added columns
//for the events custom post type
function events_custom_columns ($column) {
global $post;
switch($column)
{
case "location":
$custom = get_post_custom();
echo ' ' . $custom["event_desc"][0] .' <br>';
echo $custom["event_location"][0];
break;
case "eventdate":
//$custom = get_post_custom();
//echo $custom['event_date'][0];
$custom = get_post_custom();
$custom_date = $custom['event_date'][0];
$eventdate = date('d.m.Y',strtotime($custom_date));
echo '<em>'.$eventdate .'</em>';
break;
case "start":
$custom = get_post_custom();
echo '<em>'.$custom['event_start_time'][0].' - '.$custom['event_end_time'][0].'</em>';
break;
}
}
// Spaltenbreite anpassen
add_action('admin_head', 'hidey_admin_head');
function hidey_admin_head() {
echo '<style type="text/css">';
echo '.column-eventlocation { width:100px }';
echo '.column-eventdate { width:100px }';
echo '.column-start { width:100px }';
echo '.column-author { width:100px }';
echo '.column-title a { width:50% }';
echo '</style>';
}
// Meta Box für die Details
add_action("admin_init", "events_admin_init");
function events_admin_init(){
add_meta_box("event_meta", "Event Details", "event_details_meta", "events", "normal", "default");
}
// Datunsformat
function get_default_date_format() {
return 'Y-m-d H:i:s';
}
function event_details_meta() {
//Das post-Objekt einlesen
global $post;
//Metadaten des Posts ermitteln (falls Event bearbeitet wird,
//sollen sofort die gespeicherten Werte angezeigt werden!)
echo '<div class="meta_box_work">';
echo'<label><span>An welchem Datum und zu welcher Zeit beginnt die Veranstaltung.</span></label>';
echo '<p><label><b>Datum:</b><label>';
echo '<input type="text" name="event_date" value=" ' . get_event_datum("event_date") . '" /> <em> Format:Monat/Tag/Jahr</em> ';
// event_desc
echo '<p><label>Beschreibung: </label><input type="text" size="70" name="event_desc" value="' . get_event_field("event_desc") . '" /></p>';
// event_start_time
echo '</p><p><label>Start: </label><input type="text" name="event_start_time" value="' . get_event_field("event_start_time") . '" /><em>(hh:mm) oder (00:00)</em></p>';
// event_end_time
echo '<p><label>End Time: </label><input type="text" name="event_end_time" value="' . get_event_field("event_end_time") . '" /> <em>((hh:mm) oder (00:00))</em> </p>';
// event_location
echo '<p><label>Location: </label><input type="text" size="70" name="event_location" value="' . get_event_field("event_location") . '" /></p>';
// event_location_url
echo '<p><label>Location URL: </label><input type="text" size="70" name="event_location_url" value="' . get_event_field("event_location_url") . '" /></p>';
echo '</div>';
}
// Datum laden oder setzen
function get_event_datum($event_field) {
global $post;
$custom = get_post_custom($post->ID);
$custom_date = get_event_field("event_date");
$date = date( 'Y-m-d', $custom_date );
if (isset($custom[$event_field])) {
return $custom[$event_field][0];
}
if( empty( $custom[$event_field] ) ) {
return date( 'Y-m-d' );
}
}
// Daten holen wenn vorhanden
function get_event_field($event_field) {
global $post;
$custom = get_post_custom($post->ID);
if (isset($custom[$event_field])) {
return $custom[$event_field][0];
}
}
// Daten speichern
add_action('save_post', 'save_event_details');
function save_event_details(){
global $post;
// Englisches Datumsformat Y-m-d H:i:s
$date = get_post_meta( $post_id, 'event_date', true );
$time = '00:00:00';
$date = date( 'Y-m-d', $date );
$timestamp = strtotime( $date . ' ' . $time );
save_event_field('event_date', $timestamp );
save_event_field("event_start_time");
save_event_field("event_end_time");
save_event_field("event_location");
save_event_field("event_location_url");
save_event_field("event_desc");
}
function save_event_field($event_field) {
global $post;
if(isset($_POST[$event_field])) {
update_post_meta($post->ID, $event_field, $_POST[$event_field]);
}
}
##################################
// Shortcode Ausgabe
##################################
//Schort [events]
function get_events_shortcode($atts){
global $post;
// Das Datum von Heute
$today = date("Y-m-d");
// Events nach Datum Sortieren
$args1 = array(
"post_type" => 'events',
'meta_key' => 'event_date', // name of custom field Format
'orderby' => 'meta_value',
"order" => 'ASC',
"posts_per_page" => 5,
'meta_query' => array(
array(
'key' => 'event_date',
'value' => $today,
'compare' => '>=',
'type' => 'DATE',
)
),
);
$loop = new WP_Query( $args1 );
if( $loop->have_posts() ):
while( $loop->have_posts() ): $loop->the_post();
$my_title = get_the_title();
// $my_content = the_content(); // Beitraganzeigen
$my_content = apply_filters( 'the_content', get_the_content() );
$my_content1 = get_post_meta( get_the_ID(), 'event_start_time', true );
$my_content2 = get_post_meta( get_the_ID(), 'event_end_time', true );
$my_content3 = get_post_meta( get_the_ID(), 'event_location', true );
$my_event5 = get_post_meta( get_the_ID(), 'event_location_url', true );
$my_content4 = get_post_meta( get_the_ID(), 'event_start_time', true );
$my_eventdesc = get_post_meta( get_the_ID(), 'event_desc', true );
// Datumsformat ändern auf Deutsches Format
$custom_date = get_post_meta( get_the_ID(), 'event_date', true );
$my_eventdate = date('d.m.Y',strtotime($custom_date));
$heute = date('d.m.Y');
$titel_link = ''.$my_title.'';
// Daten anzeigen wenn diese nicht älter sind als heute
$return_string .= '<p><strong>'.$titel_link.'</strong> <br>';
$return_string .= '<b>Wann:</b> '.$my_eventdate.' <b>Start:</b> '.$my_content1.' - <b>Rückkehr:</b> '.$my_content2.'<br>';
$return_string .= '<b>Treffpunkt:</b> '.$my_content3 .'<br>';
$return_string .= '<b>Details:</b> <a class="moretag" href="'. get_permalink($post->ID) . '"> ... Anzeigen</a></p>';
endwhile;
endif;
wp_reset_query();
return $return_string;
}
add_shortcode( 'events', 'get_events_shortcode' );
?>
Alles anzeigen
Und hier geht es zur Homepage wo das Script läuft.
http://www.wandernimsaaletal.de