it-swarm.com.de

Wie kann ich festlegen, dass auf der Seite Neuen Beitrag hinzufügen die Sichtbarkeit standardmäßig auf Privat festgelegt ist?

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!

8
Matt Refghi

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' );

?>
3
hearvox

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;
}
1
Yaron