Hypercomments WordPress для разных типов записей
30 мая 2014 в 3:30 в категории Плагины и модули 2 комментарияСегодня все больше и больше информации появляется в сети Интернет. Все больше и больше компаний заказывают разработку сайтов и представляют всему миру свой продукт. Социальные сети — это мощный инструмент для продвижения продуктов и услуг на интернет-рынке. Таким образом страницы сайтов пестрят виджетами и плагинами социальных сетей: вступите в нашу группу, поставьте лайк, сделайте репост. Эта «социализация» интернета дошла до того что уже около полугода-год группы, компании и фирмы разыгрывают призы с помощью лайков. Чтобы выиграть достаточно сделать репост записи.
Каждая социальная сеть (ФейсБук и ВКонтакте, например) предоставляет возможность использовать виджет комментариев для вашего ресурса, который дает возможность пользователям этой социальной сети оставить комментарий, и вы не будете волноваться на счет спама, роботов и прочих неприятностей, связанных с открытыми комментариями к вашей странице.
Но ведь если существует минимум две социальные глобальные сети, то необходимо учитывать пользователей обеих! Использовать один? Теряем пользователей второй сети. Использовать два виджета комментариев? Не рационально и неудобно. Что же делать?
На этот вопрос уже нашли ответы разработчики таких систем как:
- Disqus.com
- IntenseDebate.com
- Cackle.ru
- HyperComments.com
Я решил использовать именно HyperComments, т.к. список сетей, поддерживаемых сервисом более подходит для моей аудитории и он более гибок в настройках. Но столкнулся с вопросом, что этот виджет прикрепляется ко всем типам записей (custom post type).
Такой поворот меня не устроил, т.к. виджет может быть встроен один раз в страницу, а некоторые разделы моего сайта требуют несколько форм комментариев на одной странице. И я начал копать код плагина.
В итоге, мной было придумано решение, которое уникально и подойдет для любого сайта, и я думаю для любой версии плагина HyperComments и не снесется при обновлении.
Собственно решение заключается в удалении фильтра для «the_content» и переопределение функции в файле вашей темы functions.php. Код, который необходимо скопировать себе в файл выглядит так:
remove_filter( 'the_content', 'hc_the_content_filter', 50 ); add_filter('the_content', 'hc_the_content_filter_custom_posts_type', 50); function hc_the_content_filter_custom_posts_type( $content ) { global $post; global $is_append; global $user; $parse = parse_url($post->guid); if(get_option('hc_root')){ $url = str_replace('https://','',str_replace('http://','',str_replace('www.','',$post->guid))); }else{ $url = str_replace('https://','',str_replace('http://','',str_replace('www.','',str_replace($parse['host'], get_option('home'), $post->guid)))); } if(get_option('hc_title_widget')){ if($post->comment_status == 'open'){ if ( !is_singular()){ $content = sprintf( '%s<div class="hc_content_comments" data-xid="'.$url.'"></div>', $content ); } } } if(is_singular()){ // Nikita_Sp hack for DW Q&A comments work if($post->comment_status == 'open' && $post->post_type != 'custom-post-type' && $post->post_type != 'your-second-post-custom-type'){ $is_append = true; $widget = hc_get_comment_widget( get_option('hc_wid'), hc_get_language(), $url, hc_get_auth(), get_option('hc_append'), get_option('hc_word_limit'), get_option('hc_realtime'), get_option('hc_comments_level'), get_option('hc_css') ); $content = $content.$widget; } } return $content; }
Сама функция является оригиналом фильтра для контента записи из плагина HyperComments, ну а дополнительное условие включено под соответствующим комментарием.
На этом все. Удачной социальной интеграции, если есть вопросы — пишите в комментарии или в соответствующий раздел Вопросов и ответов.
Не забываем ставить «лайк» и рассказывать друзьям! Спасибо!