Shigaev
@Shigaev
кило

Почему в дочерней теме не вносятся изменения в некоторые из файлов (не CSS)?

Создал дочернюю тему от 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>';
}
}
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ответы на вопрос 1
Shigaev
@Shigaev Автор вопроса
кило
 
 
Немного порыл, потом меня навели намёками на то-то и то-то, порыл ещё и вроде как срослось решение.

Оказывается, в дочерней подменяются только шаблоны, полученные штатным механизмом, и те скрипты, которые подключены с использованием пути get_stylesheet_directory(). Это значит, что нужный мне файл /classes/class-twentytwenty-walker-comment.php, подключен через require get_template_directory() . '/classes/... — он будет браться из родительской. Это всё упрощает, но мало в каких руководствах описывается — как именно.

Сделал так:
  1. Сниппет на месте, ок. Они у меня живут в плагине «Code Snippets», хотя прежде я сунул бы его в functions.php.
  2. Файл /classes/class-twentytwenty-walker-comment.php в дочерней отредактирован, как описано в топике — добавлен вызов сниппета delete_comment_link(get_comment_ID());.
  3. Далее, в отдельный сниппет, я поместил запрос на предоставление мне дочернего файла комментирования вместо родительского:
  4. require get_stylesheet_directory() . '/classes/class-twentytwenty-walker-comment.php';


Всё, тащемт. Пока работает. Правильно ли я сделал?
 
 
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы