Acest mic tutorial WordPress este un pic complicat și înfricoșător.
Pornim de la necesitatea de a schimba unele drepturile (roles) predefinite la un tip de utilizator. Voi exemplifica prin a schimba la Author dreptul de a publica un articol. Practic nu mai vreau ca autorul să poată publica, așa cum implicit poate, vreau doar să poată scrie și să lase publicarea pe seama Adminstratorului.
Întrebarea firească ar fi de ce nu utilizez utilizatorul de tip Contributor. Conform drepturilor utilizatorilor WordPress acesta nu poate publica un articol. Da, așa este, însă contributorul nu poate uploada fișiere spre deosebire de author care poate.
Schimbarea de drepturi o vom vedea în caseta de Publicare din dreapta.
Schimbarea de drepturi o voi face fără a apela la pluginuri. Vom schimba direct din baza de date, însă nu vă fie frică, cu atenție și cu un backup la îndemână nimic nu se va strica.
Pașii necesară schimbării drepturilor autorului
1. Folosind phpMyAdmin căutați în baza de date tabela „wp_options”. Aici intervine prima observație: dacă ați fost scrupuloși la instalarea wordpress-ului, prefixul tabelei nu mai este wp_ acest prefix fiind acum prefixul pus la instalare în formularul de instalare. Dacă nu-l mai știți căutați-l în fișierul config.php. În cazul nostru prefixul este cim_
$table_prefix = 'cim_';
2. În coloana „option_name” căutați câmpul „wp_user_roles”. La fel ca mai sus, dacă ați schimbat prefixul tabelelor, ceea ce este foarte bine, câmpul căutat va avea numele noul_prefix_user_roles. În cazul acesta „cim_user_roles”. Acestă înregistrare o puteți găsi rapid folosind următoare comandă SQL:
SELECT * FROM wp_options WHERE option_name="wp_user_roles"
unde wp_ va fi înlocuit cu prefixul tabelelor.
3. Edităm această înregistrare și copiem valoarea din câmpul „optin_value”. Acesta va arăta aproximativ ca mai jos:
a:5:{s:13:"administrator";a:2:{s:4:"name";s:13:"Administrator";s:12:"capabilities";a:71:{s:13:"switch_themes";b:1;s:11:"edit_themes";b:1;s:16:"activate_plugins";b:1;s:12:"edit_plugins";b:1;s:10:"edit_users";b:1;s:10:"edit_files";b:1;s:14:"manage_options";b:1;s:17:"moderate_comments";b:1;s:17:"manage_categories";b:1;s:12:"manage_links";b:1;s:12:"upload_files";b:1;s:6:"import";b:1;s:15:"unfiltered_html";b:1;s:10:"edit_posts";b:1;s:17:"edit_others_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:10:"edit_pages";b:1;s:4:"read";b:1;s:8:"level_10";b:1;s:7:"level_9";b:1;s:7:"level_8";b:1;s:7:"level_7";b:1;s:7:"level_6";b:1;s:7:"level_5";b:1;s:7:"level_4";b:1;s:7:"level_3";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:17:"edit_others_pages";b:1;s:20:"edit_published_pages";b:1;s:13:"publish_pages";b:1;s:12:"delete_pages";b:1;s:19:"delete_others_pages";b:1;s:22:"delete_published_pages";b:1;s:12:"delete_posts";b:1;s:19:"delete_others_posts";b:1;s:22:"delete_published_posts";b:1;s:20:"delete_private_posts";b:1;s:18:"edit_private_posts";b:1;s:18:"read_private_posts";b:1;s:20:"delete_private_pages";b:1;s:18:"edit_private_pages";b:1;s:18:"read_private_pages";b:1;s:12:"delete_users";b:1;s:12:"create_users";b:1;s:17:"unfiltered_upload";b:1;s:14:"edit_dashboard";b:1;s:14:"update_plugins";b:1;s:14:"delete_plugins";b:1;s:15:"install_plugins";b:1;s:13:"update_themes";b:1;s:14:"install_themes";b:1;s:11:"update_core";b:1;s:10:"list_users";b:1;s:12:"remove_users";b:1;s:9:"add_users";b:1;s:13:"promote_users";b:1;s:18:"edit_theme_options";b:1;s:13:"delete_themes";b:1;s:6:"export";b:1;s:24:"NextGEN Gallery overview";b:1;s:19:"NextGEN Use TinyMCE";b:1;s:21:"NextGEN Upload images";b:1;s:22:"NextGEN Manage gallery";b:1;s:19:"NextGEN Manage tags";b:1;s:29:"NextGEN Manage others gallery";b:1;s:18:"NextGEN Edit album";b:1;s:20:"NextGEN Change style";b:1;s:22:"NextGEN Change options";b:1;}}s:6:"editor";a:2:{s:4:"name";s:6:"Editor";s:12:"capabilities";a:38:{s:17:"moderate_comments";b:1;s:17:"manage_categories";b:1;s:12:"manage_links";b:1;s:12:"upload_files";b:1;s:15:"unfiltered_html";b:1;s:10:"edit_posts";b:1;s:17:"edit_others_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:10:"edit_pages";b:1;s:4:"read";b:1;s:7:"level_7";b:1;s:7:"level_6";b:1;s:7:"level_5";b:1;s:7:"level_4";b:1;s:7:"level_3";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:17:"edit_others_pages";b:1;s:20:"edit_published_pages";b:1;s:13:"publish_pages";b:1;s:12:"delete_pages";b:1;s:19:"delete_others_pages";b:1;s:22:"delete_published_pages";b:1;s:12:"delete_posts";b:1;s:19:"delete_others_posts";b:1;s:22:"delete_published_posts";b:1;s:20:"delete_private_posts";b:1;s:18:"edit_private_posts";b:1;s:18:"read_private_posts";b:1;s:20:"delete_private_pages";b:1;s:18:"edit_private_pages";b:1;s:18:"read_private_pages";b:1;s:24:"NextGEN Gallery overview";b:1;s:19:"NextGEN Use TinyMCE";b:1;s:21:"NextGEN Upload images";b:1;s:22:"NextGEN Manage gallery";b:1;}}s:6:"author";a:2:{s:4:"name";s:6:"Author";s:12:"capabilities";a:14:{s:12:"upload_files";b:1;s:10:"edit_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:4:"read";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:12:"delete_posts";b:1;s:22:"delete_published_posts";b:1;s:24:"NextGEN Gallery overview";b:1;s:19:"NextGEN Use TinyMCE";b:1;s:21:"NextGEN Upload images";b:1;s:22:"NextGEN Manage gallery";b:1;}}s:11:"contributor";a:2:{s:4:"name";s:11:"Contributor";s:12:"capabilities";a:9:{s:10:"edit_posts";b:1;s:4:"read";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:12:"delete_posts";b:1;s:24:"NextGEN Gallery overview";b:1;s:19:"NextGEN Use TinyMCE";b:1;s:21:"NextGEN Upload images";b:1;s:22:"NextGEN Manage gallery";b:1;}}s:10:"subscriber";a:2:{s:4:"name";s:10:"Subscriber";s:12:"capabilities";a:2:{s:4:"read";b:1;s:7:"level_0";b:1;}}}
O nebunie!
Să vedem ce înseamnă aceste cifre și litere.
- a:5 – listera a urmată de două puncte și o cifra înseamnă că urmează să fie declarate un număr de elemente, exemplu: a:5 se citește „urmează să fie declarate cinci elemente”
- s:6:”author” – litera s urmată de două puncte și o cifra apoi de alte două puncte și între ghilimele de un șir de cuvinte însemnă este declarația unei proprietăți (element) din mulțimea definită prin „a” două puncte, exemplu: s:6:”author” se citește string de lungime 6 caractere author
- b:1 este un element boolean: true sau false
Aceste trei tipuri de declarații se grupează îm matrici de elemente.
4. Păstrăm varianta originală și căutăm după s:6:”author” și vom găsi ceva de genul:
s:6:"author"; a:2: { s:4:"name";s:6:"Author";s:12:"capabilities"; a:10: { s:12:"upload_files";b:1;s:10:"edit_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:4:"read";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:12:"delete_posts";b:1;s:22:"delete_published_posts";b:1; } }
Adică: stringul author are două matrici de elemente, prima conține name, auhor și capabilities care la rândul său este o matrice de 14 elemente cu drepturile autorului: upload_files, edit_posts, edit_published_posts, publish_posts, read și altele.
Deja am găsit locul în care este definit dreptul de a publica articolul de către „author”.
5. Întreg șirul ce definește dreptul autorului de a publica direct un post este: „s:13:”publish_posts”;b:1″. Acest șir trebuie șters după care salvăm înregistrarea și vedem rezultatl în editarea unui post unde în loc de Publish vom avea butonul de Submit to Review ca în figura de mai sus.
6. Concluzii.
- în această înregistrare adaugă și pluginurile drepturi, deci matricile de mai sus pot fi diferite, mai mari nu mai mici.
- întotdeauna faceți backup
- folosiți metoda: modifică-testează-modifică-testează-publică
PS folosiți metoda asta doar dacă nu aveți încotro 🙂