La forma más fácil de hacer que las publicaciones sean privadas de forma predeterminada

3

No sé cómo crear un complemento, así que no puedo hacer lo que se sugiere aquí ¿Cómo puedo hacer que la página Agregar Nueva Publicación tenga la Visibilidad configurada como Privada por defecto?

entonces, ¿cuál es la alternativa?

    
pregunta user310291 22.06.2011 - 21:45

3 respuestas

3

La solución aceptada no es la respuesta correcta para cambiar la visibilidad de cualquier tipo de publicación a cualquier estado. El código de abajo es la forma correcta de cambiar el estado de la publicación.

function set_post_type_status_private( $status, $post_id ) {
    $status = 'private';
    return $status;
}
add_filter( 'status_edit_pre', 'set_post_type_status_private', 10, 2 );

Actualizado :

El filtro anterior cambiará el estado de la publicación a Privado cuando el usuario presione el botón Guardar borrador o Publicar . Así que en la carga de la página de edición, si ve Estado Público , no se preocupe.

Hay un filtro más disponible para cambiar el estado antes de guardar en la base de datos. El filtro es status_save_pre pero no encontré ninguna documentación en esta página , así que escribí el siguiente código para probar it.

function save_post_type_status_private( $status ) {
    $status = 'private';
    return $status;
}
add_filter( 'status_save_pre', 'save_post_type_status_private', 10, 1 );

El filtro anterior guarda la publicación como tipo de publicación Privada tan pronto como se carga la página de edición, por lo que es posible que desee utilizar este filtro en status_edit_pre , pero si uso status_save_pre filter me encuentro con un problema, no puedo borrar ninguna publicación. Así que prefiero 'status_edit_pre' sobre 'status_save_pre' hasta que el equipo de WordPress solucione este error.

    
respondido por el Vikas Khunteta 15.02.2016 - 09:44
6

Encontré esto en Foros de WordPress :

Puedes agregar esto a functions.php. He probado una vez y parece que funciona bien.

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' );
    
respondido por el patnz 25.09.2011 - 02:26
1

La alternativa sería encontrar a alguien más para crear un complemento.

Si está usando WordPress.com (lo que significa que no puede instalar complementos arbitrarios en su sitio), entonces no tiene suerte. Pero para una instalación de WordPress alojada en sí misma, deberá escribir un complemento e instalarlo en su sitio. No hay alternativas cuando se trata de agregar funcionalidad personalizada.

    
respondido por el EAMann 22.06.2011 - 22:31

Lea otras preguntas en las etiquetas