Hallo Forum,
dies ist mein erster Beitrag, ich bin also noch ziemlicher Anfänger was das Thema WP betrifft.
Für eine Webseite möchte ich ein Plugin für einen benutzerdefinierten Beitragstyp „Veranstaltungen“ erstellen. Ich habe mich dabei stark an einem Beispiel aus dem Buch von Richard Eisenmenge orientiert. Allerdings möchte ich, dass auch Autoren neue Veranstaltungen posten können und weiß nicht so genau, wo ich da ansetzen muss. Würde mich freuen, von euch zu hören. Danke!
[PLAIN]
<?php
/**
* Plugin Name: Phoenix Event Custom Post Typ
*/
function add_phoenix_events() {
$labels = array(
'name' => 'Veranstaltungen',
'singular_name' => 'Veranstaltung',
'add_new' => 'Erstellen',
'add_new_item' => 'Neue Veranstaltung erzeugen',
'edit_item' => 'Veranstaltung bearbeiten',
'new_item' => 'Neue Veranstaltung',
'view_item' => 'Veranstaltung ansehen',
'view_items' => 'Veranstaltungen ansehen',
'search_items' => 'Nach Veranstaltungen suchen',
'not_found' => 'Nichts gefunden',
'not_found_in_trash' => 'Nichts im Papierkorb gefunden',
'all_items' => 'Alle Veranstaltungen',
'archives' => 'Veranstaltungsarchiv',
'attributes' => 'Veranstaltungsattribute',
'insert_into_item' => 'Einfügen',
'uploaded_to_this_item' => 'Medien für Veranstaltungen',
'featured_image' => 'Veranstaltungs-Flyer',
'set_featured_image' => 'Veranstaltungs-Flyer festlegen',
'remove_featured_image' => 'Veranstaltungs-Flyer entfernen',
'use_featured_image' => 'Veranstaltungs-Flyer verwenden',
'menu_name' => 'Veranstaltungen',
'filter_items_list' => 'Veranstaltungen',
'items_list_navigation' => 'Veranstaltungen',
'items_list' => 'Weitere Veranstaltungen',
'name_admin_bar' => 'Veranstaltung',
);
$args = array(
'labels' => $labels,
'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail', 'comments', 'trackbacks'),
'taxonomies' => array( 'phoenix_eventtype' ),
'hierarchical' => false,
'public' => true,
'show_in_rest' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_admin_bar' => true,
'menu_position' => 5,
'can_export' => false,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'rewrite' => array('slug' => 'events'),
'capability_type' => 'page',
);
register_post_type( 'phoenix_event', $args );
}
add_action( 'init', 'add_phoenix_events', 0 );
function add_phoenix_event_fields() {
add_meta_box( 'location', 'Ort', 'add_phoenix_events_location', 'phoenix_event', 'side', 'high' );
add_meta_box( 'eventdate', 'Datum', 'add_phoenix_events_eventdate', 'phoenix_event', 'side', 'high' );
add_meta_box( 'eventprice', 'Preis', 'add_phoenix_events_price', 'phoenix_event', 'side', 'high' );
}
function add_phoenix_events_location() {
global $post;
$custom = get_post_custom( $post->ID );
$location = $custom['location'][0];
echo '<input type="text" name="location" value="' . $location . '" />';
}
function add_phoenix_events_price() {
global $post;
$custom = get_post_custom( $post->ID );
$eventprice = $custom['eventprice'][0];
echo '<input type="text" name="eventprice" value="' . $eventprice . '" />';
}
function add_phoenix_events_eventdate( $post ) {
wp_enqueue_script( 'jquery-ui-datepicker' );
wp_enqueue_style( 'jquery-ui-style', '//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css', true);
$eventdate = get_post_meta( $post->ID, 'eventdate', true );
?>
<script>
jQuery(document).ready(function() {
jQuery('#eventdateid').datepicker({
dateFormat : 'yy-mm-dd'
});
});
</script>
<input type="text" name="eventdate" id="eventdateid" value="<?php echo $eventdate; ?>" /></td>
<?php
}
function save_phoenix_event_fields( $post_id ) {
$post_type = get_post_type( $post_id );
if ( $post_type != 'phoenix_event' ) {
return;
}
update_post_meta( $post_id, 'location', $_POST['location'] );
update_post_meta( $post_id, 'eventdate', $_POST['eventdate'] );
update_post_meta( $post_id, 'eventprice', $_POST['eventprice'] );
}
add_action( 'admin_init', 'add_phoenix_event_fields' );
add_action( 'save_post', 'save_phoenix_event_fields' );
function define_phoenix_events_list_columns( $columns ) {
$columns = array (
'cb' => '<input type="checkbox" />',
'title' => 'Veranstaltung',
'location' => 'Ort',
'eventdate' => 'Datum',
'eventprice' => 'Preis'
);
return $columns;
}
function output_phoenix_events_list_field( $column, $post_id ) {
$custom = get_post_custom( $post_id );
if ( $column == 'location' ) {
echo $custom['location'][0];
}
elseif ( $column == 'eventdate' ) {
$custom = get_post_custom();
echo date_i18n( get_option( 'date_format' ), strtotime( $custom['eventdate'][0] ) );
}
elseif ( $column == 'eventprice' ) {
echo $custom['eventprice'][0];
}
}
add_filter( 'manage_edit-phoenix_event_columns', 'define_phoenix_events_list_columns' );
add_action( 'manage_posts_custom_column', 'output_phoenix_events_list_field', 10, 2 );
function add_phoenix_eventtype() {
$labels = array(
'name' => 'Veranstaltungsart',
'singular_name' => 'Veranstaltungsart',
'search_items' => 'Veranstaltungsarten durchsuchen',
'all_items' => 'alle Veranstaltungsarten',
'parent_item' => 'Übergeordnete Veranstaltungsart',
'parent_item_colon' => 'Übergeordnete Veranstaltungsart:',
'edit_item' => 'Veranstaltungsart bearbeiten',
'update_item' => 'Veranstaltungsart aktualisieren',
'add_new_item' => 'Veranstaltungsart hinzufügen',
'new_item_name' => 'Neue Veranstaltungsart',
'not_found' => 'Keine Veranstaltungsarten gefunden',
'menu_name' => 'Veranstaltungsarten'
);
$args = array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_in_rest' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'genre' ),
);
register_taxonomy( 'eventtype', array('phoenix_event', 'page'), $args );
}
add_action( 'init', 'add_phoenix_eventtype', 0 );
[/PLAIN]