Kommentek elérhetőségének finomhangolása WordPressben előnézeti képe

Kommentek elérhetőségének finomhangolása WordPressben

| Olvasási idő: 1 perc

Nem hiszem, hogy a témaválasztást magyarázni kellene: ezer és egy okod lehet arra, hogy tiltani vagy korlátozni akard a WordPress-ben a kommentelési lehetőséget. Ma erre mutatok egy teljesen Ctlr-C + Ctrl-V és egy néhány soros megoldást is. 

Szokásunkhoz híven kezdjünk az mu-plugins mappában, ahol létrehozzuk a disable-comments.php fájlt, a következő tartalommal: 

php
<?php
/*
Plugin Name: Disable Comments
Plugin URI: https://gist.github.com/mattclements/eab5ef656b2f946c4bfb#gistcomment-2781851
Description: Disable WordPress comments globally
Version: 1.0
Author: danielpost
Author URI: https://gist.github.com/mattclements/eab5ef656b2f946c4bfb#gistcomment-2781851
License: GPLv3
*/

add_action('admin_init', function () {
    // Redirect any user trying to access comments page
    global $pagenow;

    if ($pagenow === 'edit-comments.php') {
        wp_redirect(admin_url());
        exit;
    }

    // Remove comments metabox from dashboard
    remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal');

    // Disable support for comments and trackbacks in post types
    foreach (get_post_types() as $post_type) {
        if (post_type_supports($post_type, 'comments')) {
            remove_post_type_support($post_type, 'comments');
            remove_post_type_support($post_type, 'trackbacks');
        }
    }
});

// Close comments on the front-end
add_filter('comments_open', '__return_false', 20, 2);
add_filter('pings_open', '__return_false', 20, 2);

// Hide existing comments
add_filter('comments_array', '__return_empty_array', 10, 2);

// Remove comments page in menu
add_action('admin_menu', function () {
    remove_menu_page('edit-comments.php');
});

// Remove comments links from admin bar
add_action('init', function () {
    if (is_admin_bar_showing()) {
        remove_action('admin_bar_menu', 'wp_admin_bar_comments_menu', 60);
    }
});

A fenti snippet nem csinál mást, mint hogy nem destruktív módon globálisan tiltja a kommentelés lehetőségét: gyakorlatilag semmit sem kell törölnünk (de ha esetleg saját sablont használunk, akkor 1) törölhetjük a sablonból a comments.php-t, vagy 2) meg sem kell írnunk, ha nem tervezzük a kommentek támogatását), de a rendszerből teljesen eltűnik a "komment alrendszer".

Ennél eggyel szofisztikáltabb megoldás lehet az, ha csak bizonyos személyi körre szeretnénk engedélyezni a kommentelés lehetőségét és megtekintését. Ebben az esetben mixelnünk kell a korábban tárgyalt egyedi szerepkörök és/vagy képességek kódját a jelenlegivel, mondjuk valami ilyesmivé: 

php
<?php
/*
Plugin Name: Show Comments for specific user role only
Plugin URI: https://www.webmenedzser.hu
Description: Show WordPress comments for specific user role only
Version: 1.0
Author: Ottó Radics
Author URI: https://www.webmenedzser.hu
License: GPLv3
*/

// Close comments on the front-end
add_filter('comments_open', function() {
    if (!current_user_can('customer')) {
        return false;
    } else {
        return true;
    }
}, 1);

Itt nem tiltjuk le a kommenteket, pusztán elrejtjük azokat az "arra érdemtelenek" elől: ha valamilyen titkos szektát készülünk alapítani, kifejezetten hasznos lehet a fenti snippet. :) 

Ha több user role-t is engedélyezni szeretnénk (ebben az esetben az administrator és a subscriber szerepkörűek szólhatnak hozzá), akkor az alábbi snippet lehet a segítségünkre: 

<?php
/*
Plugin Name: Show Comments for specific user roles only
Plugin URI: https://www.webmenedzser.hu
Description: Show WordPress comments for specific user roles only
Version: 1.0
Author: Ottó Radics
Author URI: https://www.webmenedzser.hu
License: GPLv3
*/

// Close comments on the front-end
add_filter('comments_open', function() {
    $user = wp_get_current_user();
    $enabled_roles = ['administrator', 'subscriber'];
    $user_roles = $user->roles;

    if (array_intersect($enabled_roles, $user_roles)) {
        return true;
    } else {
        return false;
    }
}, 1);

A lehetőségek természetesen korlátlanok, így a továbbiakat a fantáziádra és az egyedi igényeidre bízom. 

Kérdésed, témajavaslatod van? Írj nekem! 

Frissítés: 

2019. július 25.: Több szerepkör alapján való szűrés hozzáadva.