Поддержка Проблемы и решения Как вывести комментарии через шорткод?

  • В файл functions.php добавляю код:

    function shortcodecomments(){
        return comments_template();
        }
    add_shortcode('com', 'shortcodecomments');

    В середине постав вставляю шорткод:
    [com]
    Но почему-то форма комментариев выводится не в том месте где вставлен шорткод, а над постом. Как вылечить?

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Модератор Юрий

    (@yube)

    Наверно потому, что comments_template() не возвращает значение, а сразу выводит. Возможно, его надо обернуть в ob_*

    Подскажите как именно это сделать.

    Модератор Юрий

    (@yube)

    ob_start();
    comments_template();
    return ob_get_flush();

    Если вот так:

    function shortcodecomments(){
      ob_start();
      comments_template();
      return ob_get_flush();
      }
    add_shortcode('com', 'shortcodecomments');

    То работает не правильно и вообще как-то странно… У меня вставлен шорткод между:

    <h2>Написать отзыв</h2>
    [com]
    <h2>Все отзывы</h2>

    Если смотреть исходный код (http://violetta-nn.ru/otzyvy/), то там действительно выводится код, но он почему-то еще и надо страницей выводится.

    Модератор Юрий

    (@yube)

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

    Модератор Yui

    (@fierevere)

    ゆい

    их можно вставить как в варианте disqus

    Universal Code. Для вывода в этом случае используется JavaScript, который можно использовать везде

    код можно взять в админке комментариев disqus

    либо если у вас disqus плагин настроен на двойное хранение комментариев и в базе вордпресс, то можно использовать для показа и их, но комментировать через WP при включенном discus = ловить глюки, т.к. там синхронизация в одну сторону автоматическая, каждый раз делать экспорт вручную — не вариант.

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Тема «Как вывести комментарии через шорткод?» закрыта для новых ответов.