4.4.6. Anzeige des Entwurfs im Frontend

Nun haben wir den Code für das Freigeben soweit fertig. Wir müssen jetzt noch sicherstellen, dass ein Beitrag im Frontend dann auch angezeigt wird, wenn ein Benutzer nicht eingeloggt ist.

Datei templates/released-posts.php:

<h2><?php _e( 'Current released posts', 'drafts-for-friends' ); ?></h2>

<table class="wp-list-table widefat">
    <thead>
    <tr>
        <th><?php _e( 'Post title', 'drafts-for-friends' ); ?></th>
        <th><?php _e( 'Link', 'drafts-for-friends' ); ?></th>
        <th><?php _e( 'Options', 'drafts-for-friends' ); ?></th>
    </tr>
    </thead>
    <tbody>
	<?php
	$query = new WP_Query( array(
		'post_type'      => 'post',
		'post_status'    => 'draft',
		'posts_per_page' => - 1,
		'meta_query'     => array(
			array(
				'key'     => 'dff_key',
				'compare' => 'EXISTS',
			),
		),
	) );

	if ( $query->have_posts() ) {
		while ( $query->have_posts() ) {
			$query->the_post();
			$link = get_post_permalink();
			$link = add_query_arg( array( 'dff_key' => get_post_field( 'dff_key' ) ), $link );
			?>
            <tr>
                <td><?php esc_html_e( get_the_title() ); ?></td>
                <td><?php
					printf(
						'<a href="%s" target="_blank">%s</a>',
						esc_url( $link ),
						esc_html( $link )
					);
					?></td>
                <td><?php // @todo: Option zum Löschen hinzufügen ?></td>
            </tr>
			<?php
		}
	} else {
		?>
        <tr>
            <td colspan="3"><?php _e( 'No posts found.', 'drafts-for-friends' ); ?></td>
        </tr>
		<?php
	}

	?>
    </tbody>
</table>

Beschreibung:

  • Zuerst verschönern wir die Tabelle ein wenig und nutzen dazu die internen CSS-Klassen von WordPress.
  • Danach fügen wir die Logik zur Ausgabe des Links ein. Dazu fügen wir den Parameter dff_key an das Ende des Permalinks an.
  • Wir erhalten beim Aufrufen des Links als nicht-eingeloggter Benutzer eine Fehlermeldung.

Datei drafts-for-friends.php:

You’re not allowed to see this content. Please log in first.