Возможно, вы захотите сохранить количество комментариев в опубликовать метаданные , чтобы позже вы могли использовать их для сортировки.
Кстати, ваша функция не будет работать из-за разницы в формате ответа, который вы используете, и реального ответа. (количество комментариев присутствует в response->comments->count
, а не в response->comments
). Также вы можете захотеть использовать fields=comments
, чтобы ограничить ответ включением только подробностей о комментариях без всех остальных данных или использовать FQL-запрос для получения только количества комментариев:
SELECT commentsbox_count FROM link_stat WHERE url = 'POST_URL'
Поток, как я вижу, может быть таким:
- Хранить количество комментариев в пост-мета
- Обновление количества комментариев, вызывающих
fb_comment_count
после просмотра сообщения
- Используйте
query_posts
с meta_key
для изменения значений по умолчанию.
function fb_comment_count() {
global $post;
$url = get_permalink($post->ID);
$query = "SELECT commentsbox_count FROM link_stat WHERE url = '{$url}'";
$responseText = file_get_contents('https://graph.facebook.com/fql?q='.$query);
$responseJson = json_decode($responseText);
$commenteCount = $responseJson->data->commentsbox_count;
update_post_meta($post->ID, 'facebook_comments_count, $commenteCount);
// ...
}
Как только ваши сообщения имеют facebook_comments_count
meta , вы можете использовать query_posts
в The Loop :
query_posts('posts_per_page=5&meta_key=facebook_comments_count&orderby=meta_value&order=DESC')