confidentialité

  • WordPress :5.2
  • Statut : non résolu
3 sujets de 1 à 3 (sur un total de 3)
  • Auteur
    Messages
  • #2273432
    evolutio
    Participant
    Initié WordPress
    1 contributions

    Bonjour,

    Ma configuration WP actuelle :
    – Version de WordPress : 5.2.2
    – Version de PHP/MySQL : 7.2.20 / 5.5.5
    – Thème utilisé : Divi Community Child Theme
    – Extensions en place : Advanced Access Manager (5.9.8), Akismet Anti-Spam (4.1.2), Before + After Images for Divi (1.2.3), Divi Admin Color Scheme (1.0), Divi Booster (2.9.5), Divi Children (3.0.9), DIVI Enhancer (3.9), Divi Module Image Overlay (2.0), DIVI Section Enhancer (2.1), Divi Supreme Modules (1.6.7), Divi Toolbox (1.4.1), Forum_wordpress_fr (4.2), GTranslate (2.8.48), Optimize Database after Deleting Revisions (4.8.1), Panorama for Divi (1.0), Peter’s Login Redirect (2.9.4), Post Type Search Module For Divi (1.1), Really Simple CAPTCHA (2.0.2), Shortcodes Ultimate (5.3.0), Show IDs by Echo Plugins (1.0.1), Simple Custom CSS (4.0.2), Simple Divi Shortcode (1.0), User Switching (1.5.1), WP-Members (3.2.9.3), WPS Cleaner (1.4.5), WP Users Media (4.1.0)
    – Adresse du site : https://evolutio-patrimoine.com
    – Nom de l’hébergeur : Apache

    Problème(s) rencontré(s) :

    je ne suis pas developpeur, et c’est mon premier site WordPress.

    Les utilisateurs n’utilisent pas les articles, que les pages, pour des raisons de conception du projet et d’utilisation de layout ” incompatible” avec les articles.

    Pour des soucis de confidentialité côté utilisateur je voudrais supprimer ceci :

    J’ai trouvé sur le web des fonctions php, mais qui ne fonctionnent pas pour moi:

    Comment désactiver (ou supprimer) “Tous les articles, les articles publiés et la corbeille” dans les articles de tableau de bord – Échange de pile de développement WordPress

    Affichez uniquement les articles créés par l’utilisateur actuel de WP sur la page “Articles” du back-end – Rutwick Gangurde’s Blog

    J’ai vraiment besoin de confidentialité entres utilisateurs et entre utilisateurs et admin.

    Ce qui m’étonne, pour le moins, c’est de ne pas trouver de solution autre que celle-ci sur le web, même avec les éditeurs de rôles, qui mettent en défaut l’éditeur de rôle de Divi. Pourtant même sur les blogs il y a besoin de confidentialité.

    Je suis dans une impasse. Merci, déjà, pour ceux qui prendront la peine de se pencher sur ce problème.

    Gilles

    #2273757
    momofr@free.fr
    Modérateur
    Maître WordPress
    2486 contributions

    Salut, il faut certainement éviter des articles qui datent de 2012 pour les fonctions PHP WP, bien d’eau à coulé sous les ponts depuis.

    J’ai testé ça, et ça semble marcher (images et posts liés au compte seulement affichés) :

    add_action('pre_get_posts', 'query_set_only_author' );
    
    function query_set_only_author( $wp_query ) {
     global $current_user;
     if( is_admin() && !current_user_can('edit_others_posts') ) {
        $wp_query->set( 'author', $current_user->ID );
        add_filter('views_edit-post', 'fix_post_counts');
        add_filter('views_upload', 'fix_media_counts');
     }
    
    }
    
    function fix_post_counts($views) {
     global $current_user, $wp_query;
     unset($views['mine']);
     $types = array(
        array( 'status' =>  NULL ),
        array( 'status' => 'publish' ),
        array( 'status' => 'draft' ),
        array( 'status' => 'pending' ),
        array( 'status' => 'trash' )
     );
    
     foreach( $types as $type ) {
        $query = array(
            'author'   => $current_user->ID,
            'post_type'   => 'post',
            'post_status' => $type['status']
        );
    
        $result = new WP_Query($query);
    
        if( $type['status'] == NULL ):
             $class = ($wp_query->query_vars['post_status'] == NULL) ? ' class="current"' : '';
            $views['all'] = sprintf(__('<a href="/%s"'. $class .'>All <span class="count">(%d)</span></a>', 'all'),
                admin_url('edit.php?post_type=post'),
                $result->found_posts);
    
        elseif( $type['status'] == 'publish' ):
            $class = ($wp_query->query_vars['post_status'] == 'publish') ? ' class="current"' : '';
             $views['publish'] = sprintf(__('<a href="/%s"'. $class .'>Published <span class="count">(%d)</span></a>', 'publish'),
                   admin_url('edit.php?post_status=publish&post_type=post'),
                $result->found_posts);
       
        elseif( $type['status'] == 'draft' ):
            $class = ($wp_query->query_vars['post_status'] == 'draft') ? ' class="current"' : '';
            $views['draft'] = sprintf(__('<a href="/%s"'. $class .'>Draft'. ((sizeof($result->posts) > 1) ? "s" : "") .' <span class="count">(%d)</span></a>', 'draft'),
                admin_url('edit.php?post_status=draft&post_type=post'),
                $result->found_posts);
    
         elseif( $type['status'] == 'pending' ):
            $class = ($wp_query->query_vars['post_status'] == 'pending') ? ' class="current"' : '';
            $views['pending'] = sprintf(__('<a href="/%s"'. $class .'>Pending <span class="count">(%d)</span></a>', 'pending'),
                   admin_url('edit.php?post_status=pending&post_type=post'),
                $result->found_posts);
    
        elseif( $type['status'] == 'trash' ):
            $class = ($wp_query->query_vars['post_status'] == 'trash') ? ' class="current"' : '';
            $views['trash'] = sprintf(__('<a href="/%s"'. $class .'>Trash <span class="count">(%d)</span></a>', 'trash'),
                 admin_url('edit.php?post_status=trash&post_type=post'),
                $result->found_posts);
        endif;
     }
    
     return $views;
    }
    
    function fix_media_counts($views) {
     global $wpdb, $current_user, $post_mime_types, $avail_post_mime_types;
     $views = array();
     $_num_posts = array();
     $count = $wpdb->get_results( "
        SELECT post_mime_type, COUNT( * ) AS num_posts
        FROM $wpdb->posts
        WHERE post_type = 'attachment'
        AND post_author = $current_user->ID
        AND post_status != 'trash'
        GROUP BY post_mime_type
    	
     ", ARRAY_A );
      
     foreach( $count as $row )
        $_num_posts[$row['post_mime_type']] = $row['num_posts'];
        $_total_posts = array_sum($_num_posts);
        $detached = isset( $_REQUEST['detached'] ) || isset( $_REQUEST['find_detached'] );
    
     if ( !isset( $total_orphans ) )
         $total_orphans = $wpdb->get_var("
            SELECT COUNT( * )
            FROM $wpdb->posts
            WHERE post_type = 'attachment'
            AND post_author = $current_user->ID
            AND post_status != 'trash'
            AND post_parent < 1
        ");
    
     $matches = wp_match_mime_types(array_keys($post_mime_types), array_keys($_num_posts));
    
     foreach ( $matches as $type => $reals )
        foreach ( $reals as $real )
            $num_posts[$type] = ( isset( $num_posts[$type] ) ) ? $num_posts[$type] + $_num_posts[$real] : $_num_posts[$real];
    
     $class = ( empty($_GET['post_mime_type']) && !$detached && !isset($_GET['status']) ) ? ' class="current"' : '';
     $views['all'] = "<a href='upload.php'$class>" . sprintf( __('All <span class="count">(%s)</span>', 'uploaded files' ), number_format_i18n( $_total_posts )) . '</a>';
    
     foreach ( $post_mime_types as $mime_type => $label ) {
        $class = '';
         if ( !wp_match_mime_types($mime_type, $avail_post_mime_types) )
            continue;
         if ( !empty($_GET['post_mime_type']) && wp_match_mime_types($mime_type, $_GET['post_mime_type']) )
            $class = ' class="current"';
         if ( !empty( $num_posts[$mime_type] ) )
            $views[$mime_type] = "<a href='upload.php?post_mime_type=$mime_type'$class>" . sprintf( translate_nooped_plural( $label[2], $num_posts[$mime_type] ), $num_posts[$mime_type] ) . '</a>';
     }
    
    $views['detached'] = '<a href="/upload.php?detached=1"' . ( $detached ? ' class="current"' : '' ) . '>' . sprintf( __( 'Unattached <span class="count">(%s)</span>', 'detached files' ), $total_orphans ) . '</a>';
    
     return $views;
    
    }

    #2273993
    ferman
    Participant
    Maître WordPress
    879 contributions

    Bonjour,

    Pour pouvoir réfléchir à la question, il faudrait quelques renseignements complémentaires:

    • Est-il prévu un petit ou un grand nombre de participants?
    • Les participants peuvent-ils seulement lire des pages sélectionnées par l’administrateur ou peuvent-ils aussi les éditer?
    • Peuvent-ils créer de nouvelles pages (ce qui implique qu’ils aient un rôle d’éditeur (qu’on peut personnaliser) ou bien les pages sont-elles créées par l’administrateur et mises à leur disposition?
    • Qui  doit voir les pages à part l’auteur?
3 sujets de 1 à 3 (sur un total de 3)
  • Vous devez être connecté pour répondre à ce sujet.