web-dev-qa-db-fra.com

Aidez-moi! Transformez les données de liens php en url OR masquer le lien de modification dans post admin OR masquer les brouillons pour tous les utilisateurs sauf admin?

Mon site Web permet aux utilisateurs de télécharger des événements via un processus de téléchargement intégré à une page d'accueil personnalisée.

En tant que téléchargeur d'événements, je souhaite également que les utilisateurs aient accès au tableau de bord où ils peuvent afficher les événements qu'ils ont publiés.

Je souhaite idéalement supprimer l'accès à edit.php. Je ne veux pas que les utilisateurs puissent modifier/ou accéder à post.php, du tout via leur tableau de bord. Je veux seulement qu'ils téléchargent des événements via le téléchargement frontal personnalisé.

POSSIBILITÉ DE SOLUTION 1

Je pourrais désactiver complètement l'édition pour le rôle de contributeur et toujours avoir un moyen d'afficher les messages des listes d'événements à partir de leur tableau de bord, si je pouvais juste apprendre à ajouter cette information au menu situé dans la barre latérale d'administration sous la forme d'un bouton le tableau de bord (pour tous les utilisateurs). Ce code provient d'un lien que j'ai trouvé dans un widget:

<a href="<?php echo get_author_link( $echo = false, $current_user->data->ID; ?>LINKED TEXT HERE</a>

J'ai essayé de l'ajouter en utilisant AG Custom admin, ajout de la fonction du bouton de menu, mais cela n'a pas fonctionné.

Ce qui précède serait la solution idéale pour moi car il n'y aurait pas d'accès à edit.php via le lien URL pour ce rôle.

Un inconvénient est que l'affichage des publications à l'avant-plan affiche un bouton d'édition lorsque la publication est encore un brouillon. Je voudrais supprimer le bouton EDIT de la page d’accueil qu’ils consultent. Je pense qu’il n’apparaît que dans les brouillons car ce rôle ne peut pas éditer les publications publiées (je devrai vérifier cela deux fois). Même si ce sont les utilisateurs qui postent, je ne veux pas qu'ils puissent le modifier une fois qu'il a été soumis, car je ne veux que ce que j'approuve à l'origine d'être publié.

Je pense que je pourrais le résoudre moi-même (en célibataire probablement?) Si quelqu'un peut m'aider pendant que j'y pense, ce serait génial!

POSSIBILITÉ DE SOLUTION 2

Donc, si j'utilise le gestionnaire de rôles pour empêcher complètement l'édition, cela supprime tout accès au fichier edit.php. ce qui est bien dans l'exemple ci-dessus (si je peux ajouter ce lien pour afficher tous les messages d'auteurs dans la barre latérale d'administration). Mais je veux vraiment que les personnes qui publient des événements puissent voir une liste de leurs événements et voir chacun d’eux. Edit.php semble un bon deuxième meilleur endroit pour cela si je ne peux pas créer de lien vers une liste dans le front-end comme dans exp ci-dessus, car les événements sont déjà listés dans edit.php, de même que la fonction d'affichage. Je ne veux tout simplement pas autoriser l'édition d'un lien, et il y a ce lien dans le titre du message jusqu'à ce que je l'approuve!

Je pensais que si je pouvais désactiver le lien pour éditer un post. (via post.php) qui est incorporé dans le titre de chaque ligne du tableau des publications (ou des événements dans mon cas), ce qui empêcherait les gens d'accéder à cet écran. MAIS je devrais alors, cependant, résoudre que l'écran serait toujours accessible s'ils collaient dans '/edit.php' à l'URL. J'ai supprimé quickedit et edit, et edit du filtre en bloc en haut de edit.php.

SOLUTION POSSIILITE 3

Un autre correctif possible tire parti du fait qu’une fois le message publié (approuvé par moi) par un contributeur, ce lien sur le titre du message dans l’écran edit.php disparaît réellement!

Donc, alternativement, si quelqu'un connaissait un code, je pouvais le coller dans des fonctions du thème ou même des fichiers de base (cela ne me dérange pas, de toute façon, je suis desp!) Pour permettre aux seuls administrateurs de publier des statuts brouillons. dans leur liste de publications dans edit.php, donc une fois qu'un contributeur publie un événement au début, il n'apparaît pas dans son propre écran de publication tant qu'il n'est pas publié (lorsque je l'ai approuvé), cela résoudrait également mon problème. !

Merci beaucoup pour votre temps! Je suis complètement coincé, je ne trouve aucune solution à ces options, ceci autant que je peux obtenir avec chacune! Je serais tellement SO reconnaissant s'il y avait quelqu'un qui pourrait m'aider avec ce défi, je suis vraiment perplexe.

Je ne suis pas un expert en php, mais je suis pratique et raisonnable, et je suis doué pour trouver des solutions et modifier celles des autres pour répondre à mes besoins inhabituels, etc. J'ai passé des années sur ce projet et je n'avais qu'à faire signe le drapeau blanc! Je rechercherai avec impatience tous les conseils de notre part dans le monde entier!

Merci encore Kaye

.................................................. .....................................

Autres notes:

  • J'utilise wordpress v3.1.1
  • J'utilise gérer les lecteurs propres messages
  • J'ai caché la médiathèque pour que les contributeurs ne voient que leurs propres idées.
  • J'utilise le gestionnaire de rôles pour gérer les limites de rôles
  • J'utilise aussi rolescoper pour gérer les limites de catégories
  • J'utilise les options d'administration et d'écran global pour personnaliser l'écran
  • J'utilise un administrateur personnalisé pour aider à personnaliser l'écran d'administration
  • Avec un tas d'autres fonctions et plugins.

J'aimerais beaucoup permettre aux personnes qui téléchargent des événements d'accéder à un tableau de bord. Je ne veux donc pas cacher tout le tableau de bord en tant que solution au problème de masquage de l'accès à l'édition (ou à POST.php) dans le back-end.

5
user14275

Autant que j'ai bien compris, vous souhaitez désactiver la possibilité d'atteindre tout autre côté en dehors du tableau de bord.

Eh bien, voici un petit plugin pour vous:

<?php
! defined( 'ABSPATH' ) AND exit;
/* Plugin Name: (#45989) »kaiser« Allow Dashboard only access */

function wpse45989_access_dashboard_only()
{
    if (
        ! isset( get_current_screen()->id )
        OR 'dashboard' !== get_current_screen()->id
        )
    {
        // Lets limit this to only specific user roles
        if ( current_user_can( 'ROLE_NAME_HERE' ) )
            exit( wp_redirect( admin_url() ) );
    }
}
add_action( 'current_screen', 'wpse45989_access_dashboard_only', 100 );
1
kaiser