Чиним пропавшие комментарии в WordPress

Думал, что здесь-то я уж точно описал последние свои мытарства с комментариями WordPress. Но нет. И ведь опять благодаря тем изменениям, которые были привнесены в его новые версии! Вот ведь говорят – не тронь, если работает, так нет, надо ж было обновиться. Тьфу. Ну да ладно, к делу. С недавних пор я заметил, что у меня пропали комментарии. Нет, т.е. в админке Вордпресс я их видел, а вот в статьях они не выводятся. Убил часа 4, прежде чем смог докопаться до сути. А проблема оказалась очень проста, и на ее решение меня натолкнула вот эта вот статья. Хотя, признаюсь честно, допер не сразу, пришлось и нейросеть привлекать, и Гугл. Но обо всем по порядку.

Итак, мы помним, что для того, чтобы выводились комментарии, в файле comments.php у нас, помимо всякой хрени, должно было быть прописано либо :

либо что-то типа:

Первое использует свою функцию, а второе – отсылку к вводимой нами в например, functions.php или, как в моем случае, theme-functions.php новой функции под названием templatelite_comment. И зашел я, надо сказать, прочитав вышеупомянутую статью, не с того конца. Полез в базу данных, смотреть, что у меня там в поле comment_type, строковое значение было пустое, или со значением comment. Убедившись, что поля не пустые, а такие, как надо, полез в код. Сперва заменил в comments.php мой второй вариант с callback-ом на первый, использующийся по умолчанию в вордпресс. Увидел, что комментарии появились, но все кривые, что и понятно, ведь теперь моя функция не вызывалась. Но это уже обнадеживало. Вернув свой к его изначальному виду, начал препарировать templatelite_comment внутри theme-functions.php. Код там, надо сказать, очень большой, кто хочет – может ознакомиться здесь. Ломал я его долго, пока не сдался, и не запросил помощи у DeepSeek. Из всего того, что он мне предлагал – было много всякой ерунды, на проверку которой с отсутствующими результатами ушел не один час, но одно зрелое зерно я все-таки ухватил – заменил весь длиннющий код на коротенький:

и снова увидел свои пусть кривые, но комментарии. После этого стал поочередно удалять те или иные участки своего кода, чтобы увидеть, что же не так. И – та-дам! Обнаруживаю в одной из строк у себя как раз ту часть, о которой писалось в статье выше, а именно:

Ну и тут сразу все стало понятно. Все дело в том, что $comment->comment_type это переменная, содержащая тип комментария. В WordPress есть несколько предопределенных типов, таких как comment (обычный комментарий пользователя), pingback (пинг), trackback (трекбэк). Также, могут быть созданы и использоваться пользовательские типы комментариев, но это сейчас нам не важно. Тк вот, если case 'comment':, то выполняется этот блок кода. В моем же случае case был простой пустой строкой, и как только я заменил данную строку на:

Ура – я снова увидел свои красивейшие комментарии! Сравнение case ” : никогда не срабатывало, потому что тип комментария всегда был ‘comment’. В результате ни один комментарий не выводился.

Не знаю, нужно ли это еще кому-либо… Как мне кажется, сейчас уже не осталось людей, пишущих что-либо на своих страничках, все ушли или в Телегу и ведут каналы, или заделались ютюберами. Но пусть будет для баланса вселенной.

1
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Добавить комментарий

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


Subscribe without commenting

QR Code Business Card