Intereting Posts
_.omit не является функцией Как удалить комментаторов возможность добавлять гиперссылки к комментариям? Выберите объекты из get_posts () Почему WordPress 3.0.4 продолжает удалять содержимое файла .htaccess? Как отображать конкретную статью для конкретных пользователей? Ключ пользователя "20eleven_content_nav" больше не выводит навигационную ссылку после обновления 3.5 Как получить доступ к глобальному переменному $ menu внутри функции класса Разбиение разделов на отдельные разделы Создал WordPress, используя быструю установку на Hostgator, но не смог получить доступ к URLS как добавить класс css в ящики продукта li, для img, добавить кнопку корзины, decs, price … Я пытаюсь создать поле вопроса безопасности для моей страницы входа настраиваемый URL-адрес страницы архива по умолчанию для указания на постоянную ссылку на страницу favicon и несколько сайтов Как изменить петлю в archives.php Чтобы иметь 11 сообщений на странице и CSS-стиль Регистрация нового виджета

Показывать комментарии во всплывающем окне

Я хочу показать комментарии во всплывающем окне для страницы с id=22 .

Это якорь, на клике которого откроется всплывающее окно:

 <a class="button button-small button-line-light comment-popup" href="<?php echo get_stylesheet_directory_uri();?>/comments-detail.php">View All</a> 

Если у меня есть простой html в comments-detail.php , всплывающее окно отображает html.

Но когда я пытаюсь получить список комментариев страницы id=22 , в comments-detail.php , со следующим простым кодом:

 <?php $args = array( 'post_id' => 22 ); $comments = get_comments( $args ); ?> 

то я получаю ошибку:

вызов неопределенной функции get_comments()

Что я делаю неправильно или мой подход совершенно не прав?

Вы заново изобретаете колесо здесь 😉

Проблема

Вы обходите WordPress таким подходом, поэтому это объясняет сообщение об ошибке.

Доступ к любому настраиваемому файлу в вашем каталоге темы не будет автоматически загружать ядро ​​WordPress.

Уже доступно

Это уже поддерживается ядром WordPress.

Вы должны проверить comments_popup_link() и comments_popup_script() .

В общем, вы можете получить все свои комментарии, для данного сообщения:

 example.tld/?comments_popup=123 

где 123 – некоторый пост-идентификатор .

Вы можете переопределить всплывающий шаблон комментариев по умолчанию, разместив собственную версию файла comments-popup.php в текущем каталоге тем.

По умолчанию он находится в /wp-includes/theme-compat/comments-popup.php .

Примечание по WP 4.2.2 – Неверная встроенная документация

В основном мы получили это описание :

  • Путь шаблона можно фильтровать с помощью hook_copup_template.

но это неправильно. Шаблон происходит от:

 $template = get_query_template( 'comments_popup', array( 'comments-popup.php' ) ); 

и в get_query_template() у нас есть следующая очистка:

  $type = preg_replace( '|[^a-z0-9-]+|', '', $type ); 

где тип comments_popup изменяется на commentspopup .

Поэтому правильный фильтр:

 add_filter( 'commentspopup_template', function( $template ) { return $template; } ); 

Похоже, что правильный тип должен был быть comments-popup а не comments_popup . Но тогда мы можем задаться вопросом, почему подчеркивание удалено – проверьте билет № 21213, чтобы узнать больше об этом.

Я подал основной трэк-билет здесь # 32989 , касающийся встроенной документации.