Отдельная страница для комментариев к постам на WordPress: создание плагина

Отдельная страница для комментариев к постам

В этом разделе мы создадим плагин для WordPress, который добавляет отдельную страницу для комментариев к каждому посту на вашем сайте. Новая страница с адресом .../comments/ будет создана для каждого поста и будет отображать все комментарии к нему.

Давайте начнем — создадим полноценный плагин для WordPress.

Шаги по созданию плагина

  1. Создайте папку для плагина с именем comments-page.
  2. Внутри этой папки создайте файл comments-page.php.
  3. Активируйте плагин. Либо вы можете добавить код в файл functions.php вашей темы.

Код плагина

init();

class Kama_Separate_Comments_Page {

    static $page_title_patt = "Комментарии к %s";

    function init() {
        add_filter('query_vars',       [$this, 'query_vars']);
        add_action('init',             [$this, 'add_endpoint']);
        add_action('single_template',  [$this, 'template_redirect']);
        add_filter('get_comment_link', [$this, 'get_comment_link']);
        add_filter('wp_title',         [$this, 'wp_title'], 10, 1);

        register_activation_hook(__FILE__,   [$this, 'activate']);
        register_deactivation_hook(__FILE__, [$this, 'deactivate']);
    }

    function query_vars($vars) {
        $vars[] = 'comments';
        return $vars;
    }

    // Добавляем страницу /comments/ ко всем постоянным ссылкам постов
    function add_endpoint() {
        add_rewrite_endpoint('comments', EP_PERMALINK);
    }

    // Шаблонный файл для постоянной ссылки /comments/
    function template_redirect($templates = '') {
        global $wp_query;

        if (!isset($wp_query->query['comments'])) {
            return $templates;
        }

        $templates = locate_template('comments-page-template.php', false);

        if (!$templates) {
            $templates = __DIR__ . '/comments-page-template.php';
        }

        return $templates;
    }

    // Исправляем постоянные ссылки комментариев
    function get_comment_link($url) {
        $urlparts = explode('#', $url);
        return untrailingslashit($urlparts[0]) . '/comments/#' . $urlparts[1];
    }

    // Исправляем заголовок страницы
    function wp_title($title) {
        global $wp_query;

        if (isset($wp_query->query['comments'])) {
            $title = sprintf(self::$page_title_patt, $title);
        }

        return $title;
    }

    function activate() {
        $this->add_endpoint();
        flush_rewrite_rules();
    }

    function deactivate() {
        flush_rewrite_rules();
    }

}

Создание файла шаблона для комментариев

Теперь вам нужно создать файл шаблона. Этот файл будет отвечать за отображение нашей страницы с комментариями к посту. Назовите файл comments-page-template.php и поместите его в папку плагина или в папку вашей текущей темы (родительской или дочерней).

Шаблон комментариев

Используйте следующий код, чтобы настроить шаблон для вашей темы:



Комментарии: ""

$post->ID])); comment_form(); ?>

Важно!

Теперь вам нужно зайти на страницу администратора "Постоянные ссылки". Это необходимо для сброса правил перенаправления в WordPress.

На этом всё! Отдельная страница для комментариев к постам готова. Добавьте /comments/ в конец URL текущего поста, чтобы перейти на страницу с комментариями к этому посту.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *