Das Örtchen RSS-Feed
Suchen
Blog
Ähnliche Beiträge
Neueste Kommentare
Neueste Einträge
Populäre Einträge
Tagwolke
addon auswertung barcamp blog bug cms cms made simple datenkrake drupal feed film firefox frickeln friday gewinnspiel hardware how-to individualisierung meinung mmo modul nas php problem rss se7en server sicherheit sicherung software spiel teil theme trailer unterhaltung update windows windows 7 wordpress wow
Monatsarchiv

WordPress: Veranstaltungswebsite mit WordPress 4 (Teil 2)

Gestern habe ich in Teil 1 beschrieben, wie man bei WordPress 4 das Blog als Agenda für eine begleitende Veranstaltungswebsite nutzen kann. Allerdings fehlt uns derzeit noch die Anzeige der Referenten. Hierfür werden wir nicht die Benutzer unserer WordPress-Installation verwenden, da wir nicht für jeden Referenten einen Login anlegen möchten und zudem bei einem einzigen Veranstaltungspunkt mehrere Referenten möglich sein sollen.

Schritt 2a - Custom Post Types

Persönlich bevorzuge ich in solchen Fällen einen extra Inhaltstyp (kein Beitrag und keine Seite), damit eine bessere Unterscheidung der Inhalte unserer Website möglich ist.

Solche Inhaltstypen werden normalerweise mittels PHP-Code angelegt, welcher in den meisten Fällen doch etwas umfangreicher ausfallen kann. Man kann stattdessen aber auch ein Plugin installieren und das Ganze über eine GUI erledigen. Diesen Weg möchte ich in dieser Anleitung beschreiten und habe mich deshalb für das Plugin Custom Post Type UI entschieden. Nach der Aktivierung dieses Plugins gibt es im Backend einen neuen Menüpunkt CPT UI. Hier legen wir mit Add New einen neuen Inhaltstyp an.

Post Type Name: referent
Label: Referenten
Singular Label: Referent

Theoretisch könnte man schon mit der ersten Angabe alleine einen neuen Inhaltstyp anlegen, wir klappen jedoch die Advanced Options aus und gehen noch ein wenig in die Details.

Menu Position: 19
Supports: Title, Editor, Revisions, Featured Image

Die restlichen Einstellungen belassen wir auf ihren Standardwerten. Nach dem Speichern dieser Formulareingaben mit dem Button Create Custom Post Type gibt es im Menü des Backends über dem Punkt Seiten einen neuen Punkt Referenten. Hier legen wir nun mit dem Unterpunkt Add Referent zwei Referenten Mr. X und Mr. Y an. Jeder Referent sollte natürlich mit einer Beschreibung und einem Beitragsbild versehen werden. Ich habe bei meiner Beispiel-Installation jedoch auf die Beschreibung verzichtet. Als Beitragsbild habe ich einen Platzhalter im Format 150 x 150 Pixel verwendet. Wichtig ist hierbei jedoch lediglich, daß das Bild quadratisch und mindestens 150 Pixel breit bzw. hoch ist.

Schritt 2b - Programmpunkte und Referenten verbinden

Als nächstes müssen wir irgendwie eine Beziehung zwischen einzelnen Punkten der Agenda und den dazugehörigen Referenten erstellen. Dies geht beispielsweise mit dem Plugin Posts 2 Posts. Dieses Plugin verfügt leider über keine GUI und wird rein über PHP-Code konfiguriert. Wir müssen also unsere functions.php aus Teil 1 erweitern.

 function child_setup() {
    add_action( 'p2p_init', 'child_connection_types' );
    add_action( 'wp', 'child_add_connected' );
}
add_action( 'after_setup_theme', 'child_setup' );

function child_connection_types() {
    p2p_register_connection_type( array(
        'name' => 'posts_to_referenten',
        'from' => 'post',
        'to'   => 'referent',
    ) );
}

function child_add_connected( $wp ) {
    global $wp_query;
    
    if (
        have_posts() &&
        (is_home() || is_archive() || is_singular( 'post' ) || is_singular( 'referent' ) )
    ) {
        p2p_type( 'posts_to_referenten' )->each_connected( $wp_query );
    }
} 

In diesem Code kommen eine ganze Reihe von nützlichen Dingen zum Einsatz, auf die ich nicht im Detail eingehen möchte. Um sich weiter in das Thema einzulesen, möchte ich jedoch ein paar Links anbieten:

Wir ergänzen die drei obigen Funktionen, wobei ich diese zur besseren Lesbarkeit zwischen der if-Anweisung und der Funktion twentyfourteen_posted_on einfügen würde.

Unter Werkzeuge > Verbindungs-Typen können wir nun unsere Konfiguration kontrollieren. Dort sollte nun stehen, daß Beiträge und Referenten verbunden sind und wir somit einzelne Verbindungen festlegen können.

Wenn man die Referenten bearbeitet, so können ab sofort rechts unten die verbundenen Beiträge festgelegt werden. In meinem Beispiel habe ich mich bei Mr. X für Punkt 1, 2 und 3 und bei Mr. Y für Punkt 2 und 4 entschieden. Programmpunkt 2 hat nun also zwei Referenten.

Schritt 2c - Theming

Wir haben zwar nun unsere Beiträge bzw. Programmpunkte mit den dazugehörigen Referenten verbunden, angezeigt werden sie deswegen jedoch leider noch nicht. Um dies zu erreichen, müssen wir die Ausgabe des verwendeten Themes und somit die Theme-Datei content.php anpassen.

Da wir das Parent-Theme nicht verändern wollen, müssen wir diese Datei zunächst in den Ordner child2014 kopieren. Sie existiert nun also in beiden Ordnern twentyfourteen und child2014. Nun müssen wir diese Datei im Ordner child2014 anpassen. In Zeile 30 (direkt unter der Ausgabe des Titels) sollte sich derzeit eine Leerzeile befinden. Dort muss nachfolgender Code hinzugefügt werden:

 <?php get_template_part('inc/connected'); ?> 

Zur besseren Lesbarkeit des Codes, sollte über und unter der neuen Zeile jeweils eine Leerzeile sein.

Mit dem Aufruf von get_template_part teilen wir WordPress mit, daß an dieser Stelle der Inhalt einer neuen Datei connected.php ausgegeben werden soll. Für diese Datei legen wir zunächst im Ordner unseres Child-Themes den Unterordner inc an. Dort legen wir dann wiederum unsere neue Theme-Datei mit nachfolgendem Inhalt an:

 <div class="connected">
    <?php if ( get_post_type() == 'post' ): ?>
        Referent(en):
    <?php else: ?>
        Programmpunkt(e):
    <?php endif; ?>
    
    <ul>
        <?php foreach ( $post->connected as $post ): setup_postdata( $post ); ?>
            <li>
                <a
                    href="<?php the_permalink(); ?>"
                    rel="bookmark"
                    title="<?php the_title(); ?>"
                ><?php the_title(); ?></a>
            </li>
        <?php endforeach; ?>
    </ul>
</div>

<?php wp_reset_postdata(); // set $post back to original post ?> 

Wenn nun im Frontend die Agenda angezeigt wird, so sollten bei jedem Programmpunkt die zugewiesenen Referenten zu sehen sein. Außerdem werden diese auch auf der Detailseite eines Programmpunkts angezeigt und wenn wir einen Referenten anklicken, so werden auf dessen Detailseite wiederum seine Programmpunkte angezeigt. Dies erreichen wir mittels einer Fall-Unterscheidung, die auf dem Inhaltstyp der angezeigten Inhalte basiert. Wir ermitteln diesen Typ mit der Funktion get post type.

Schritt 3 - Referentenübersicht

Abschließend würden wir noch gerne den Inhalt der linken Seitenleiste ändern. Dort soll eine bebilderte Übersicht aller Referenten in alphabetischer Reihenfolge erfolgen. Hierzu installieren wir das Plugin Flexible Posts Widget, welches glücklicherweise eine Auswahl des gewünschten Inhaltstyps ermöglicht.

Zunächst entfernen wir unter Design > Widgets alle bisherigen Widgets aus der linken Seitenleiste und fügen danach lediglich ein Flexible Posts Widget wieder hinzu. Dieses sollte den Inhaltstyp Referenten und davon alle Einträge (Angabe show 0) anzeigen. Außerdem soll bei jedem Referenten des Beitragsbild (Option Display thumbnails) in der thumbnail-Größe angezeigt werden. Widget-Titel und Reihenfolge sollten natürlich auch noch festgelegt werden, wobei ich hierfür jedoch keine Vorgaben machen möchte.

Ende

Nun ist nur noch ein wenig Feintuning nötig, welches eigentlich jeder selber schaffen sollte. So fehlt auf jeden Fall noch eine Seite für das Impressum und das Hautpmenü benötigt auch noch eine sinnvolle Reihenfolge.

Damit ist das gesteckte Ziel erreicht und die Veranstaltung kann kommen.

Falls einer meiner Leser ein solches Projekt auch schon umgesetzt hat, würde mich natürlich der Weg bzw. die Unterschiede zu meinem Weg interessieren. Wurden beispielsweise andere Plugins eingesetzt und wenn ja weswegen?

Hallo! Bist du neu hier? Dann abonniere doch den RSS-Feed dieses nicht mehr ganz so stillen Örtchens, um über meine geistigen Ergüsse auf dem Laufenden zu bleiben. Alternativ besteht auch die Möglichkeit, sich von FeedBurner per E-Mail über meine Ausscheidungen benachrichtigen zu lassen.

Kommentare (4)

Pingback

[...] und wurde inzwischen als Blogbeitrag WordPress: Veranstaltungswebsite mit WordPress 4 (Teil 1) und Teil 2 [...]

Re: WordPress: Veranstaltungswebsite mit WordPress 4 (Teil 2)

Ein toller Artikel!
Komplexe Sachen werden schön strukturiert dargestellt.

Ich beiße mir gerade an einem ähnlichen Thema als PHP Neuling die Zähne aus. Aber kurz zu meinem Vorgehen.

Ich nutze Events manager für die Veranstaltungen. Dort gibt es schon viel fertig, was ich benötige. Aber es fehlen auch ein paar Punkte.
Insbesondere möchte ich eben auch Referenten angeben, aber auch einen Moderator und einen Veranstalter.
Ich habe mich dafür entschieden die Userdatenbank zu nutzen. Da liegen die Stammdaten, auf die ich zugreife. Dazu nehme ich das ACF cutom field plugin. Hier kann ich ein Dropdown z.B. für Moderator erstellen mit den hinterlegten Usern. Das ist alles praktisch. Später kann ich dann anhand dieser Fields Listen erstellen, filtern usw. und z.B. bei einem Referenten die von ihm durchgeführten Veranstaltungen listen.
Ich denke, dass das funktioniert ...

Allerdings gibt das selectfeld entweder die user id oder ein array des ganzen Satzes zurück. Ich brauche aber eben den Namen. Und da hänge ich ;-)

Das wäre bei deiner Vorgehensweise wohl kein Problem.
Danke für das schöne Tutorial

viele Grüße
Ingo

Re: WordPress: Veranstaltungswebsite mit WordPress 4 (Teil 2)

Hallo Ingo,

ich habe leider mit dieser Kombination noch nie gearbeitet. Ich würde jedoch vermuten, daß man das mittels Theming lösen kann, da es ja die Ausgabe von ACF betrifft.

Grüße aus Nürnberg
Jan

Re: WordPress: Veranstaltungswebsite mit WordPress 4 (Teil 2)

Hallo Jan,

Danke für die Antwort.
Ich werde es weiter probieren.

Viele Grüße nach Nürnberg
Ingo

Kommentar hinzufügen

(If you're a human, don't change the following field)
Your first name.
Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
Der Inhalt dieses Feldes wird öffentlich zugänglich angezeigt, aber als nofollow markiert.
Hinweis

Kommentare beleben den Blog! Ich freue mich über jeden Kommentar. Du kannst hier offen Deine Meinung zum Artikel sagen, aber bitte beachte die Netiquette und vermeide es andere zu beleidigen.

Bitte unterlasst es die Kommentare zu SEO-Zwecken zu missbrauchen. Kommentare mit Links, die nicht zu Blogs führen (oder zu Blogs mit Grauzonen-Themen) und/oder Keywords als Namen verwenden und/oder Links im Kommentarbereich enthalten, sind nicht erwünscht!

Möchtest Du mir einen Blog-Artikel schmackhaft machen, dann schreib die URL ohne Link-Tag und ohne http(s):// in den Kommentarbereich und ich werde diesen bei Gefallen verlinken.

Die ersten vier Kommentare (mit den gleichen Daten bei Name, E-Mail und Blog) landen vor der Veröffentlichung in meiner Freigabe-Warteschlange und ich behalte mir das Recht vor, Kommentare entsprechend dieser Regeln anzupassen oder zu löschen!

t3n Magazin - Jetzt im Abo bestellen