Поддержка Проблемы и решения Дочерняя не изменяет некоторые из файлов

  •  
     
    Создал дочернюю тему от Twenty Twenty, работает всё нормально. Кроме одного — система не реагирует на изменения в одном файле — /classes/class-twentytwenty-walker-comment.php. Заметил пока в нём, другие из этой папки не проверял.

    Изменять пробовал, как из-под встроенного редактора Вордпресса, так и на сервере. Остальные *.php изменяются корректно. Для проверки, внёс изменения в таком же файле родительской темы, сработало. Что не так с этим файлом именно в дочерней теме? Куда копать?

    На всякий, если интересно и поможет пролить свет: к части, отвечающей за вид правки комментария в class-twentytwenty-walker-comment.php, добавляю пару кнопок — «Спам» и «Удалить».

    <?php
      if ( get_edit_comment_link() ) {
        echo ' <span aria-hidden="true">&bull;</span> <a class="comment-edit-link" href="' . esc_url( get_edit_comment_link() ) . '">' . __( 'Edit', 'twentytwenty' ) . '</a>';
        delete_comment_link(get_comment_ID());
    // Добавлено: 
    delete_comment_link(get_comment_ID());
    //
      }
    ?>

    При этом, delete_comment_link(get_comment_ID()); получает функционал от сниппета:

    function delete_comment_link($id) {
    if (current_user_can('edit_post')) {
    echo '| <a href="'.admin_url("comment.php?action=cdc&c=$id").'" title="Удалить">(××)</a> ';
    echo '| <a href="'.admin_url("comment.php?action=cdc&dt=spam&c=$id").'" title="Спам">(! ツ)</a>';
    }
    }

     
     
     

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Модератор Yuri

    (@yube)

    система не реагирует на изменения в одном файле

    В дочерней подменяются только шаблоны, полученные штатным механизмом, и те скрипты, которые подключены с использованием пути get_stylesheet_directory().

    class-twentytwenty-walker-comment.php и ряд других подключены так:
    require get_template_directory() . '/classes/....
    а это значит, что будет браться из родительской.

    Что делать? В дочернем functions.php (или подключенном к нему файле) создать свое альтернативное определение класса TwentyTwenty_Walker_Comment. То есть, поступить так же, как обычно поступают с замещаемыми функциями родительской темы.

     
    Спасибо. А то думал — поломалось у меня тут всё.
     
    Где можно почитать какой-нибудь мануал о методе такого подключения?
     

    Модератор Yuri

    (@yube)

    Где можно почитать какой-нибудь мануал о методе такого подключения?

    Без понятия. Никогда не интересовался мануалами на такие темы 🙂

    Да там и так всё просто. Смотрите определение функции или класса, и если определение «обёрнуто» в if ( ! function_exists | if ( ! class_exists, то значит можно переопределять (правильнее, наверно, говорить предопределять).

    У ядра WP есть ряд таких замещаемых функций, они даже вынесены в отдельный файл wp-includes/pluggable.php

     
    Немного порыл с вашей наводки. Помогло это:
     
    require get_stylesheet_directory() . '/classes/class-twentytwenty-walker-comment.php';
     
    Надеюсь, будет работать дальше. Большое спасибо.
     

    • Ответ изменён 3 года, 9 месяцев назад пользователем serpant.
Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Тема «Дочерняя не изменяет некоторые из файлов» закрыта для новых ответов.