Beitragstypen für Autoren Rolle freigeben

**Relaunch von WPDE.org**

WPDE.org wurde kürzlich unter neuer Führung übernommen und technisch vollständig modernisiert.

Neuer Betreiber ist:
**Maximilian Rupp, Tannenweg 24, 66629 Freisen**

Im Zuge der Übernahme wurde das Forum auf eine aktuelle technische Basis gestellt und wird nun aktiv weiterentwickelt.

Das Thema Datenschutz wird dabei selbstverständlich berücksichtigt.
Sollte jemand sein Benutzerkonto nicht weiterführen wollen, kann dieses jederzeit bequem über die Kontoeinstellungen gelöscht werden.

Bei Fragen oder Anliegen könnt ihr euch jederzeit gerne melden.
Wir arbeiten gerade im Hintergrund an der neuen Foren Struktur, daher wird noch nicht alles passen und es kann vorkommen das Themen/Beiträge noch in Foren sind wo es nicht rein passt. Ebenso sind noch nicht alle Bereiche fertig, die Icons werden noch gesetzt und entsprechende Labelgruppen werden noch konfiguriert für die Foren. Sobald die neue Foren Struktur fertig ist wird der Hinweis wieder entfernt.
  • 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]

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

    Wenn du Fragen hast, kannst du dich gerne jederzeit an @Maximilian Rupp wenden

    Hinweis: folgt noch

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!