Что я пытаюсь сделать
Я использую плагин под названием Comments Evolved, который собирает комментарии с вкладками из Faceook, G+ и WordPress.
Я пытаюсь заменить собственное число comments_number
числом из сводного счетчика плагина.
Проблема
Я хочу сделать это с помощью functions.php, но у меня проблемы, так как кажется, что он подсчитывает только количество комментариев Facebook. Я подозреваю, что мой фильтр не сработал, и, следовательно, он вытягивает только то, что будет вытягивать нативный WordPress.
Что я пробовал
В настоящее время я использую этот фильтр:
// Replace native comment count with Comments Evolved comment in native comments_number function
function comments_evolved_number() {
$number = comments_evolved_get_total_count();
}
apply_filters('comments_number', 'comments_evolved_number');
но, похоже, это не помогает, поскольку показывает только количество комментариев на вкладке Facebook.
В моем index.php я использую это для извлечения комментариев:
<?php comments_number( 'Say somethin\'!', '1 comment', '% comments' ) ?>
Я также пробовал add_filter
, но это, похоже, ничего не дает, поскольку комментарии вообще не выводятся. Я искал везде, на форумах, в кодексе WordPress, плагине GitHub и даже просматривал похожие темы, связанные с комментариями Disqus, но я не могу найти причину, по которой мой фильтр не работает.
Что я делаю неправильно?
ОБНОВЛЕНИЕ 1
Кажется, это работает:
function wpse_comments_evolved_number( $count )
{
// Override the comment count
if( function_exists( 'comments_evolved_get_total_count' ) )
$count = comments_evolved_get_total_count();
// We must then return the value:
return $count;
}
add_filter( 'get_comments_number', 'wpse_comments_evolved_number');
… но при тестировании кажется, что он не подтягивает количество комментариев Facebook, хотя подтягивает и агрегирует все остальное:
Комментарии Evolved конструирует comments_evolved_get_total_count()
следующим образом:
function comments_evolved_get_total_count() {
$total_count = 0;
$wordpress_count = comments_evolved_get_wordpress_count();
//$wordpress_count = get_comments_number();
$gplus_count = comments_evolved_get_gplus_count();
$trackback_count = comments_evolved_get_trackback_count();
$facebook_count = comments_evolved_get_facebook_count();
$disqus_count = comments_evolved_get_disqus_count();
$total_count = $total_count + $wordpress_count + $gplus_count + $trackback_count + $facebook_count + $disqus_count;
return $total_count;
}
//add_filter('get_comments_number', 'comments_evolved_get_total_count', 4269);
Facebook comments_evolved_get_facebook_count()
построен следующим образом:
function comments_evolved_get_facebook_count($url = "") {
if(empty($url)){ $url = get_permalink(); }
$link = 'https://graph.facebook.com/?ids=' . urlencode($url);
$link_body = wp_remote_retrieve_body(wp_remote_get($link));
$json = json_decode($link_body);
return $json->$url->comments;
}
Я не вижу никаких ошибок в этом, а в других местах он выводит правильный счетчик Facebook (я думаю — не уверен).
Что работало, но не кажется эффективным/удовлетворительным
function comment_count_agg() {
$total_count = 0;
//$wordpress_count = comments_evolved_get_wordpress_count();
$wordpress_count = get_comments_number();
$gplus_count = comments_evolved_get_gplus_count();
$trackback_count = comments_evolved_get_trackback_count();
$facebook_count = comments_evolved_get_facebook_count();
$disqus_count = comments_evolved_get_disqus_count();
$total_count = $total_count + $wordpress_count + $gplus_count + $trackback_count + $facebook_count + $disqus_count;
return $total_count;
}
add_filter('comments_evolved_get_total_count', 'comment_count_agg', 4270);
add_filter('get_comments_number', 'comments_evolved_get_total_count', 4271);
… хотя я не точно уверен, почему.
Я попробовал этот способ, потому что (а) я понял, что что-то в плагине мешает общему счету до применения фильтра и (б) потому что я подумал, что, возможно, приоритеты были какой-то проблемой.
ОБНОВЛЕНИЕ 2
На самом деле я пробовал оба вышеуказанных метода на двух разных сайтах. На 1 сайте все отлично работает любым способом.
На сайте 2 ему не удается подтянуть количество Facebook к общему совокупному количеству. Любые идеи?
Кажется, это работает:
Однако на одном сайте, который я пробовал, не подтягивается счет Facebook. На другом все работает отлично.