Beiträge und Seiten privat publizieren

Für einen Kunden mit einem WordPress als FAQ-Portal sollte eingerichtet werden, dass Beiträge und Seiten automatisch privat erstellt und publiziert werden sollen. Dies stellt eine Art zweite Kontrollinstanz dar, denn private Inhalte sind nur für angemeldete Benutzer einsehbar.

Mit einer manuellen Konfiguration, z.B. im eigenen Theme, kann das realisiert werden:

/**
 * Change the post status to private when creating a new post / page.
 *
 * @param string  $new_status The new status when saving or creating
 * @param string  $old_status The old status when saving
 * @param WP_Post $post       The post object
 *
 * @return void
 */
function save_post_transition( $new_status, $old_status, $post ) {
	if ( 'publish' === $new_status && 'private' !== $old_status ) {
		$post->post_status = 'private';
		wp_update_post( $post );
	}
}
add_filter( 'transition_post_status', 'save_post_transition', 15, 3 );

Wird der Beitrag veröffentlicht, setzen wir den Status manuell auf private und speichern erneut. Da das Ändern der Sichtbarkeit von „privat“ auf „öffentlich“ als Veröffentlichung behandelt wird, muss dieser Zustand ausgeschlossen werden.

Jetzt wird jede erste Veröffentlichung durch eine „private Veröffentlichung“ ersetzt. Das einzige was fehlt, ist der Indikator für den Benutzer, denn hier wird diese Information erst ersichtlich, wenn der Beitrag bereits erstellt wurde.

Hilfreiche Links zum Thema

Die optionale Vorauswahl der Checkbox

Beiträge und Seiten privat publizieren zu können ist an dieser Stelle schon möglich. Um die Nutzererfahrung noch etwas zu verbessern, sollte folgendes noch eingerichtet werden:

/**
 * Pre select the private checkbox when opening a new post / page.
 *
 * @param WP_Post $post The current post.
 */
function post_checkbox_pre_select( $post ) {
    ?>
    <script type="text/javascript">
    ( function ( $ ) {
        var $private_check = $( '#visibility-radio-private' );
        var $visible_submit = $( '.save-post-visibility' );

        if ( $private_check.length && $( 'body' ).hasClass( 'post-new-php' ) ) {
            setTimeout(function() {
                $private_check.prop('checked', true);
                $visible_submit.trigger( 'click' );
            }, 2000);

        }
    } ) ( jQuery );
    </script>
    <?php
}
add_action( 'post_submitbox_misc_actions' , 'post_checkbox_pre_select' );

Dieser kleine „Workaround“ sorgt dafür, dass auch die korrekte Checkbox im WordPress Menü auf der rechten Seite ausgewählt ist. Auf der anderen Seite merkt der Nutzer wohl möglich gar nicht, dass WordPress auch einen Status für Entwürfe besitzt. Diese Art der Beiträge wird in der privaten Veröffentlichung nicht mehr möglich sein und verschwindet mit der Auswahl der Checkbox!

Hilfreiche Links zum Thema

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert