Beiträge und Seiten automatisch privat publizieren
Unter Umständen kann es vorkommen, dass Beiträge und Seiten definitiv privat erstellt und veröffentlicht werden sollen. Dies ist eine Art zweite Kontrollinstanz die Sinn macht, da private Inhalte nur für angemeldete Benutzer zur Einsicht stehen.
Mit einer manuellen Konfiguration, z.B. im eigenen Theme, kann das realisiert werden:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
/** * 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.
Die optionale Vorauswahl der Checkbox
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
/** * 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!