Это кажется постоянной проблемой для других, так же как и для меня … Но даже после публикации ссылок в разделе «Вопросы, на которые уже есть ваш ответ», я все еще не могу заставить это работать.
Все, что я действительно хочу, это количество комментариев для данной статьи, передавая идентификатор (или URL) поста.
Я скачал это с GitHub: https://github.com/disqus/disqus-php
И последовал первый ответ здесь: Как получить количество комментариев Disqus для страницы, используя Disqus PHP API? который казался самым близким к тому, чего я пытался достичь. Это дало мне это далеко:
<?php
require_once('scripts/disqusapi/disqusapi.php');
$disqus = new DisqusAPI('secret_key');
$page_with_comments = $disqus->posts->details(array('thread'=>"LINK-IDENTIFIER"));
$comment_count = $page_with_comments->posts;
?>
Однако, когда я делаю это, я получаю эту ошибку:
Fatal error: Uncaught exception 'Exception' with message 'Missing required argument: post' in /home/mugheads/public_html/scripts/disqusapi/disqusapi.php:82 Stack trace: #0 /home/mugheads/public_html/test.php(4): DisqusResource->__call('details', Array) #1 /home/mugheads/public_html/test.php(4): DisqusResource->details(Array) #2 {main} thrown in /home/mugheads/public_html/scripts/disqusapi/disqusapi.php on line 82
Эта ошибка указывает на то, что вы больше не можете использовать «поток» для получения необходимого JSON … и я не могу найти какой-либо способ узнать, какой идентификатор Disqus использует для сообщений, так как при использовании «сообщения», как описано в ошибке, принимается только целое число.
Если кто-нибудь знает более простой способ или способ, который определенно работает, пожалуйста, поделитесь!
Любая помощь будет принята с благодарностью!
Я знаю, что это старый вопрос, но Google поднимает множество таких SO вопросов, в основном без каких-либо твердых ответов или ответов, которые основаны на этом Github API, который, кажется, не очень хорошо работает.
Я изо всех сил пытался получить количество комментариев в течение нескольких дней, а также пробовал тот класс API, который, казалось, вылетал из моего приложения (вероятно, из-за той же фатальной ошибки).
После более продолжительного поиска я наткнулся на ссылку на вывод JSON API Disqus, и после некоторой игры я написал быструю функцию для получения количества комментариев:
function getDisqusCount($shortname, $articleUrl) {
$json = json_decode(file_get_contents("https://disqus.com/api/3.0/forums/listThreads.json?forum=".$shortname."&api_key=".$YourPublicAPIKey),true);
$array = $json['response'];
$key = array_search($articleUrl, array_column($array, 'link'));
return $array[$key]['posts'];
}
Вам нужно зарегистрировать приложение, чтобы получить ваш открытый ключ API, что вы можете сделать здесь: https://disqus.com/api/applications/
Что делает эта функция:
$json
массив возвращает много информации о странице, на которой находится ваш плагин комментариев. Например:
Array
(
[0] => Array
(
[feed] => https://SHORTNAME.disqus.com/some_article_url/latest.rss
[identifiers] => Array
(
[0] => CUSTOMIDENTIFIERS
)
[dislikes] => 0
[likes] => 0
[message] =>
[id] => 5571232032
[createdAt] => 2017-02-21T11:14:33
[category] => 3080471
[author] => 76734285
[userScore] => 0
[isSpam] =>
[signedLink] => https://disq.us/?url=URLENCODEDLINK&key=VWVWeslTZs1K5Gq_BDgctg
[isDeleted] =>
[raw_message] =>
[isClosed] =>
[link] => YOURSITEURLWHERECOMMENTSARE
[slug] => YOURSITESLUG
[forum] => SHORTNAME
[clean_title] => PAGETITLE
[posts] => 0
[userSubscription] =>
[title] => BROWSERTITLE
[highlightedPost] =>
)
[1] => Array
(
... MORE ARRAYS OF DATA FROM YOUR SHORTNAME FORUM ... etc
)
)
Поскольку массив возвращается без каких-либо полезных ключей массива верхнего уровня, мы делаем array_search
в массиве по ключу имени столбца, который мы будем знать: URL вашей страницы, где находится плагин комментариев ([link]
)
Это тогда возвратит ключ массива верхнего уровня, в этом случае 0
который мы затем можем передать обратно, чтобы извлечь необходимую информацию из массива, такую как общее количество комментариев (ключ массива posts
).
Надеюсь, это поможет кому-то!
Других решений пока нет …