Ich versuche, ein Plugin zu erstellen, das die Seite "Neuen Beitrag hinzufügen" so ändert, dass im Feld "Sichtbarkeit" standardmäßig "Privat" angezeigt wird:
Status: Draft
Visibility: **Private**
Publish immediately
[Publish]
... im Gegensatz zu dem, was WordPress normalerweise annimmt:
Status: Draft
Visibility: **Public**
Publish immediately
[Publish]
Momentan verwende ich den Filter "wp_insert_post_data", mit dem ich alle Posts mit dem post_status "auto-draft" in "private" ändern kann. Während dies funktioniert, gibt es einen unbeabsichtigten Nebeneffekt: Wenn Sie den post_status auf "privat" ändern, wird der Beitrag anscheinend automatisch veröffentlicht, und die Schaltfläche im Editor wird auf "Aktualisieren" geändert. Wenn der Benutzer vor dem Festlegen eines Titels speichert, wird der Beitrag mit dem Titel "Auto-Draft" veröffentlicht.
Gibt es eine Möglichkeit, die Sichtbarkeit einfach standardmäßig in Privat zu ändern, sodass der Beitrag nicht automatisch veröffentlicht wird, und die Schaltfläche in "Aktualisieren" zu ändern? In Vanilla WordPress können Benutzer die Sichtbarkeit manuell in "Privat" ändern, und die Schaltfläche bleibt als "Veröffentlichen". Dies muss nur über ein Plug-in erfolgen. Ich möchte auch sicherstellen, dass "public" weiterhin vom Benutzer ausgewählt werden kann, falls er dies wünscht.
Vielen Dank!
aus dem Plugin; Verwendet die Aktion 'post_submitbox_misc_actions' und eine Abfrage, um den Benutzer zu fangen. Veröffentlichungsformular: http://wordpress.org/extend/plugins/private-post-by-default/
function default_post_visibility(){
global $post;
if ( 'publish' == $post->post_status ) {
$visibility = 'public';
$visibility_trans = __('Public');
} elseif ( !empty( $post->post_password ) ) {
$visibility = 'password';
$visibility_trans = __('Password protected');
} elseif ( $post_type == 'post' && is_sticky( $post->ID ) ) {
$visibility = 'public';
$visibility_trans = __('Public, Sticky');
} else {
$post->post_password = '';
$visibility = 'private';
$visibility_trans = __('Private');
} ?>
<script type="text/javascript">
(function($){
try {
$('#post-visibility-display').text('<?php echo $visibility_trans; ?>');
$('#hidden-post-visibility').val('<?php echo $visibility; ?>');
$('#visibility-radio-<?php echo $visibility; ?>').attr('checked', true);
} catch(err){}
}) (jQuery);
</script>
<?php
}
add_action( 'post_submitbox_misc_actions' , 'default_post_visibility' );
?>
Um einen Beitrag automatisch als privat zu kennzeichnen, verwenden Sie den Filter wp_insert_post_data. Es ist sehr einfach:
add_filter('wp_insert_post_data', 'mark_post_private');
function mark_post_private($data)
{
if($data['post_type'] == 'your_post_type_goes_here')
{
$data['post_status'] = 'private';
}
return $data;
}