WordPress – podgląd tylko własnych komentarzy w panelu administracyjnym

W panelu administracyjnym WordPress-a każdy użytkownik może podejrzeć komentarze dodane do wpisów innych autorów. Jeżeli chcemy, aby użytkownik miał podgląd tylko komentarzy dodanych do własnych wpisów musimy stworzyć wtyczkę, która ograniczy uprawnienia użytkowników. W tym wpisie zaprezentuję jak stworzyć taką wtyczkę.

Na temat podstaw tworzenia pluginów można znaleźć wiele materiałów, np. bardzo dobry kurs podstaw opublikowany na portalu Webhosting.pl, zatem nie będę tutaj poruszał zagadnień związanych z podstawami tworzenia wtyczek, tylko od razu zaprezentuję tworzenie pluginu.

Tworzymy zatem katalog naszej wtyczki, np. moje-komentarze, w niej umieszczamy plik moje-komentarze.php. W pliku umieszczamy następujący kod:

<?php
 
/*
Plugin Name: Moje komentarze
*/
 
add_action( 'init', 'wm_register_comment_list_permissions' );
 
function wm_register_comment_list_permissions () {
  if(!current_user_can('edit_others_posts')) {
    add_filter('comments_clauses', 'wm_get_comment_list_by_user');
  } 
}
 
function wm_get_comment_list_by_user($clauses) {
  if (is_admin()) {
    global $user_ID, $wpdb;
    $clauses['join'] = ", wp_posts";
    $clauses['where'] .= " AND wp_posts.post_author = ".$user_ID." 
      AND wp_comments.comment_post_ID = wp_posts.ID";
  };
  return $clauses;
};
 
?>

 

Na początek podpinamy funkcję wm_register_comment_list_permissions pod zaczep init. Zaczep init jest wywoływany po przeprowadzeniu pełnej konfiguracji WordPress-a. W funkcji sprawdzamy uprawnienia aktualnie zalogowanego użytkownika. Jeżeli użytkownik nie ma dostępu do akcji edit_others_posts (więcej o uprawnieniach w WordPress możemy przeczytać w dokumentacji)rejestrujemy funkcję wm_get_comment_list_by_user dla zaczepu filtru comments_clauses. W funkcji sprawdzamy czy znajdujemy się w panelu administracyjnym. Funkcja przyjmuje jeden parametr $clauses. Jest to tablica, zawierająca poszczególne elementy konieczne do budowy zapytania SQL pobierającego komentarze. Indeksami tablicy są poszczególne składowe zapytania SQL, np. join, fields, where. Do elementu tablicy o indeksie join dodajemy fragment ", wp_posts" – łączymy tabelę komentarzy z tabelą wpisów. Do elementu o indeksie where dodajemy kod SQL pobierający wpisy, których autorem jest aktualnie zalogowany użytkownik oraz łączymy tabelę komentarzy z tabelą wpisów. Na koniec zwracamy zmodyfikowaną tablicę $clauses.

Na koniec wgrywamy katalog wtyczki do katalogu wp-content/plugins, przechodzimy do sekcji Wtyczki w panelu administracyjnym i instalujemy wtyczkę Moje komentarze. Od teraz, jeżeli użytkownik nie posiada uprawnień do edycji wpisów innych użytkowników, nie będzie widział komentarzy dodanych do wpisów innych autorów.

Ten wpis został opublikowany w kategorii Bez kategorii. Dodaj zakładkę do bezpośredniego odnośnika.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *