Dashboard wordpress aanpassen op verschillende rollen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jjriet petersen

jjriet petersen

28/03/2017 08:56:13
Quote Anchor link
Hoi,

Ik ben zelf Admin van een WordPress-website....receptenwebsite.

Als ik inlog heb ik uiteraard alle functies in mijn dashboard zitten.

Nu zit ik met een issue. Ik wil mijn SUBSCRIBERS alleen toestemming geven voor het zien en plaatsen van Recepten, Media, Contact, Reacties...
Ik zoek een code waarmee ze wel Recepten kunnen plaatsen maar geen Berichten (=blogs).
Ik wil niet dat ze Berichten kunnen plaatsen!!

Via Google een code gevonden maar dan kan de Admin ook geen Recepten meer plaatsen (1) en tevens kunnen kun ze dan nog bovenin (bij het plusje +). Ook nog gewoon berichten en of recepten toevoegen. Iemand een idee voor aanpassing/toevoeging van code in functions.php???
 
PHP hulp

PHP hulp

21/11/2024 23:11:49
 
Marlies Maalderink

Marlies Maalderink

28/03/2017 11:18:06
Quote Anchor link
Wat is Recepten? Een custom post type?

Om te beginnen moet je onderscheid maken tussen de verschillende user roles. Je wilt dat subscribers minder privileges hebben dan (super)admins.
Je wilt dus controleren welke user er is ingelogd en dan kijken wat zijn role is.

Probleem is een beetje dat een post altijd wordt gezien als een post, ongeacht of het een custom post type is of niet. Wordpress maakt dus geen onderscheid tussen Recepten en blog posts als het gaat over user roles.
Je zult dus een zgn 'custom capability' moeten aanmaken, iets als 'plaats_recept'.

Vervolgens kun je in de admin alles verbergen voor users die geen admin zijn, behalve de dingen die je wilt dat ze wel kunnen zien/doen. Het menu item voor 'berichten' verberg je dan voor subscribers, het menu item voor 'Recepten' (ervan uitgaande dat dit een custom post type is) verberg je niet.

Of je dit vervolgens in functions.php moet doen is de vraag, omdat die aan je theme gelinkt is en deze functionaliteit niets met je theme te maken heeft. Persoonlijk zou ik er voor kiezen hier een losse plugin voor te maken.
 
Jjriet petersen

jjriet petersen

28/03/2017 16:47:20
Quote Anchor link
Hoi,

Dat is wel een duidelijk verhaal.
Maar geen idee wat/welke plugin ik dan moet pakken?
Ik heb echt goed gezocht maar ik heb er nu een stuk of 20 geprobeerd maar steeds houden ze geen rekening met de verschillende roles en of custum types.............zucht!
 
- Ariën  -
Beheerder

- Ariën -

28/03/2017 16:54:07
Quote Anchor link
Je kan die plugin natuurlijk ook zelf maken.
 
Jjriet petersen

jjriet petersen

28/03/2017 17:59:08
Quote Anchor link
Hoe dan?
 
Marlies Maalderink

Marlies Maalderink

28/03/2017 18:09:58
Quote Anchor link
Wat Ariën zegt, ik denk dat je dat zelf zult moeten doen... Geen idee of er plugins zijn die zo specifiek zijn.

Wat je zoekt om de admin op te schonen zijn deze functies:
$wp_admin_bar->remove_menu( 'new-content' ); etc die je koppelt aan de admin_bar_menu hook, en deze:
remove_menu_page('users.php'); die je koppelt aan de admin_menu hook.

Dit moet je in een if statement zetten die je koppelt aan of de user dit mag doen. (via de current_user_can() functie)

Misschien kun je met deze plugin custom user roles toekennen?
https://nl.wordpress.org/plugins/user-role-editor/


Toevoeging op 28/03/2017 21:14:24:

Jjriet petersen op 28/03/2017 17:59:08:
Hoe dan?


Ik zie je vraag nu pas. Ik zal morgen even wat opschrijven. Ik heb voor een site die ik beheer een soortgelijke plugin gemaakt alleen die selecteert mij eruit op mijn email adres en niet de admin op user role. (omdat ik toch de enige admin ben en er uberhaupt maar 2 accounts zijn)
In principe is dat verder wel ongeveer wat je nodig hebt, alleen dat stukje moet even aangepast worden.

Toevoeging op 29/03/2017 09:14:13:

Probeer deze code eens. Maak een mapje aan met de gewenste plugin naam en upload die naar de map wp-content/plugins op je server. In het mapje zet je een bestand met de naam index.php en daar zet je deze code in:

(let op, verander op de bovenste regel de Plugin Name naar de gewenste plugin naam, zoals je ook de map genoemnd hebt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
/*
  Plugin Name: Vul hier een plugin naam in
  Plugin URI: -
  Description: De admin aanpassen zodat subscribers geen posts kunnen maken maar wel recepten
  Version: 1.0
  License: GPLv2 or later
*/

//plusje met 'new' weghalen uit de admin bar

function schoonmaken_admin_bar( $wp_admin_bar ) {

        if ( !current_user_can( 'manage_options' ) ) {

            $wp_admin_bar->remove_menu( 'new-content' );

        }

}


add_action( 'admin_bar_menu', 'schoonmaken_admin_bar', 999 );

//menu links weghalen voor iedereen behalve de administrator
function remove_admin_menu_links(){

        if ( !current_user_can( 'manage_options' ) ) {

        remove_menu_page( 'edit.php' );

    }

}


add_action( 'admin_menu', 'remove_admin_menu_links' );

?>


Dit is overigens niet een hele nette oplossing, wel veruit de makkelijkste. Het verwijderd de menu options voor het maken van een nieuwe blog post voor iedereen behalve de administrator en super admin bij multi sites. Als een subscriber in zijn browser echter direct de link voor het aanmaken van een blogpost in typt dan komt hij nog steeds gewoon in het scherm voor het aanmaken van een blog post.

Dat is dus een beetje een gok die je neemt, hoe graag willen jouw users stiekum blog posts aanmaken en hoe erg is het als het een keer gebeurd? Wil je dat risico echt niet nemen dan moet je recepten (er nog steeds van uit gaande dat dat een custom post type is) gaan aanpassen en custom capabilities geven die je vervolgens handmatig moet koppelen aan de user roles.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.