Cómo bloquear las actualizaciones y la eliminación de publicaciones de WordPress después de un período establecido

Administrar un sitio web de WordPress con varios autores puede resultar complicado a veces. Existen complementos para administrar el flujo de trabajo editorial, pero puede encontrarse con situaciones en las que necesite soluciones específicas para un mejor control de su sitio de WordPress. Recientemente, ayudamos a un usuario a encontrar una solución de este tipo. Querían bloquear las actualizaciones y la eliminación de publicaciones de WordPress después de un período de tiempo establecido para todos los usuarios (incluidos los editores) después de un período de tiempo establecido. Por ejemplo, si una publicación publicada tiene 30 días o más, los editores no pueden editarla ni eliminarla. Solo los administradores pueden modificar esa publicación. En este artículo, le mostraremos cómo bloquear la edición, actualización y eliminación de publicaciones después de un período de tiempo establecido en WordPress.

Bloqueo de actualizaciones de publicaciones y eliminación de publicaciones anteriores publicadas en WordPress

Todo lo que necesita hacer es agregar el siguiente código en el archivo functions.php de su tema o en un complemento específico del sitio.

function wpbeginner_restrict_editing( $allcaps, $cap, $args ) {

    // Bail out if we're not asking to edit or delete a post ...
    if( 'edit_post' != $args[0] && 'delete_post' != $args[0]
      // ... or user is admin
      || !empty( $allcaps['manage_options'] )
      // ... or user already cannot edit the post
      || empty( $allcaps['edit_posts'] ) )
        return $allcaps;

    // Load the post data:
    $post = get_post( $args[2] );

    // Bail out if the post isn't published:
    if( 'publish' != $post->post_status )
        return $allcaps;

    //if post is older than 30 days. Change it to meet your needs
    if( strtotime( $post->post_date ) < strtotime( '-30 day' ) ) {
        //Then disallow editing.
        $allcaps[$cap[0]] = FALSE;
    }
    return $allcaps;
}
add_filter( 'user_has_cap', 'wpbeginner_restrict_editing', 10, 3 );

Esta función verifica si el usuario tiene la capacidad de editar o eliminar publicaciones. Después de eso, verifica el estado de la publicación. Si se publica una publicación y tiene más de 30 días, se elimina la capacidad del usuario para editar y eliminar la publicación. Si se publica una publicación, pero no tiene más de 30 días, los usuarios con la capacidad de editar publicaciones aún pueden editarla. Nota: Los administradores pueden editar y eliminar publicaciones cuando lo deseen.

Esperamos que este artículo ayude a cualquiera que esté buscando bloquear la edición, actualización y eliminación de publicaciones en WordPress después de un período de tiempo establecido. ¿Harías esto alguna vez en tu sitio? ¿Qué casos de uso puede ver para algo como esto? Háganos saber en los comentarios a continuación.

Fuente:

Smhmic