J'essaie de créer un plugin qui modifie la page Ajouter un nouveau message de sorte que le champ Visibilité indique "Privé" par défaut:
Status: Draft
Visibility: **Private**
Publish immediately
[Publish]
... contrairement à ce que WordPress suppose normalement:
Status: Draft
Visibility: **Public**
Publish immediately
[Publish]
Pour le moment, j'utilise le filtre "wp_insert_post_data", ce qui me permet de modifier les publications ayant un post_status de "projet automatique" en "privé". Tandis que cela fonctionne, il y a un effet secondaire non souhaité: changer le post_status en "privé" semble publier le post automatiquement, changer le bouton dans l'éditeur en "Mettre à jour". De plus, si l’utilisateur enregistre avant de spécifier un titre, l’article sera publié avec le titre "Auto-Draft".
Existe-t-il un moyen de modifier simplement Visibility à Private par défaut, de manière à ne pas publier automatiquement le message et de changer le bouton en "Mettre à jour"? Dans Vanilla WordPress, les utilisateurs peuvent modifier manuellement la visibilité en Privé, et le bouton reste tel que Publier ... Je dois juste y parvenir via un plugin. Je veux aussi m'assurer que l'utilisateur puisse toujours sélectionner le "public" s'il le souhaite.
Merci!
du plugin; utilise l'action 'post_submitbox_misc_actions' et une requête pour intercepter l'utilisateur Formulaire de publication: 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' );
?>
La manière correcte de marquer automatiquement une publication comme étant privée consiste à le faire avec le filtre wp_insert_post_data. C'est très simple:
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;
}