Многие владельцы блогов на движке Wordpress знакомы с плагином , который позволяет дублировать посты блога в "ЖеЖешечку". Ведь это же удобно: пост будет висеть в ленте друзей у френдов - и его увидят не только сами френды, но и их френды, посмотрев в ленту друзей.
Многие из таких владельцев делают неполный кросспост (полный текст или комментирование доступны только на блоге). Отсюда еще один плюс: заинтересовавшийся народ пойдет к вам на блог.
Вопрос: как оценить эту толпу ЖЖ-юзеров и отследить их движение по вашему сайту?
Ответ: с помощью меченных ссылок (подробнее под катом)
Возможность попасть из жж-поста в ваш блог осуществляется через "шапку/подвал" (термин создателя плагина), то есть через ссылки, которые помечаются в жж-посте.
Необходимо заставить плагин помещать в ЖЖ-пост меченные ссылки. Для этого надо поправить код плагина следующим образом.
Шаг №1.
Находим в файле "/wp-content/plugins/ljxp/lj_crosspost.php" строчку
$postHeader = $options['custom_header'];
Кусок кода ниже обрабатывает пользовательскую настройку "шапки/подвала", добавленный текст выделен жирным:
foreach($tags as $_term_id => $_name)
$htags[] = '<a href="'.get_tag_link($_term_id).'?utm_source=livejournal&utm_medium=feed&utm_campaign=feed" rel="bookmark">'.$_name.'</a>';
foreach($cats as $_term_id => $_name)
$hcats[] = '<a href="'.get_category_link($_term_id).'?utm_source=livejournal&utm_medium=feed&utm_campaign=feed" rel="bookmark">'.$_name.'</a>';
$htags = implode(', ', (array)$htags);
$hcats = implode(', ', (array)$hcats);
$find = array('[blog_name]', '[blog_link]', '[permalink]', '[comments_link]', '[comments_count]', '[tags]', '[categories]');
$replace = array($blogName, get_settings('home').'?utm_source=livejournal&utm_medium=feed&utm_campaign=feed', get_permalink($post_id).'?utm_source=livejournal&utm_medium=feed&utm_campaign=feed', get_permalink($post_id).'?utm_source=livejournal&utm_medium=feed&utm_campaign=feed#comments', lj_comments($post_id), $htags, $hcats);
$postHeader = str_replace($find, $replace, $postHeader);
Так мы поправили ссылки в "шапке/подвале".
Шаг №2
В том же файле находим строчку:
case "link":
$the_event .= sprintf('<p><a href="%s#more-%s">', get_permalink($post_id), $post_id) . __('Read the rest of this entry »', LJXP_DOMAIN) .'</a></p>';
break;
Меняем ее на такую:
case "link":
$the_event .= sprintf('<p><a href="%s?utm_source=feed&utm_medium=feed&utm_campaign=feed#more-%s">', get_permalink($post_id), $post_id) . __('Read the rest of this entry »', LJXP_DOMAIN) .'</a></p>';
break;
Это ссылка с текстом "Читать запись полностью".
Шаг №3
Осталось внести в настройку плагина необходимые коррективы - в поле "Заданный заголовок блога для использования в шапке/подвале" помещаем текст:
Запись опубликована в <a href="[blog_link]" target="_blank">Блоге mev'a</a>. Оставляйте <a href="[comments_link] target="_blank">комментарии</a> там.
Теперь в ЖЖ будут отправляться меченные "шапка/подвал" и ссылка на полную запись в блоге.
Но ведь в посте могут встречаться ссылки на другие страницы блога... Что делать в этом случае?
Нам надо заменить все внутренние ссылки в посте на меченные. Я это сделал с помощью самописной функции.
Шаг №4
Добавляем в файл "/wp-includes/link-template.php" функцию:
function addGAtags($text,$tag_source,$tag_medium,$tag_campaign)
{
$stringAG="utm_source=".$tag_source."&utm_medium=".$tag_medium."&utm_campaign=".$tag_campaign;
$patterns=array(
"#[\"']{1}(http://((www.)?chenado.net.*?)(/\?){1}(.*?)?(\#comment([s0-9\-]*))?)[\"']{1}#",
"#[\"']{1}(http://((www.)?chenado.net.*?)/(\#comment([s0-9\-]*))?)[\"']{1}#"
);
$replaces=array(
"http://$2/?$5&".$stringAG."$6",
"http://$2/?".$stringAG."$4"
);
return preg_replace($patterns,$replaces,$text);;
}
Эта функция позволит с помощью регулярного выражения заменять нужные нам ссылки на меченные.
Если вы заметили, в регулярном выражении жирным выделен домен сайта - ведь нам нужны именно внутренние ссылки (вы соотвественно должны подставить свой домен).
Данная функция будет обрабатывать все внутренние ссылки на страницы блога (исключая ссылки на файлы), в том числе содержащие GET-параметры ("a=1", etc.) и якоря ("#comments").
Эту функцию я также буду использовать и для другой фишки, о которой расскажу в следующем посте.
Шаг №5
Теперь осталось добавить вызовы функции в код кросспостера.
Находим все в том же файле "/wp-content/plugins/ljxp/lj_crosspost.php" строчку:
if(!$post->post_password) {
Ниже будет код вставки контента, его-то мы и должны обработать нашей функцией.
Редактируем код следующим образом (измененное выделено жирным):
if(!$post->post_password) {
if(strpos($post->post_content, "<!--more-->") === false) {
$the_event .= apply_filters('the_content', addGAtags($post->post_content,'livejournal','feed','feed'));
}
else {
$content = explode("<!--more-->", $post->post_content, 2);
$content[0]=addGAtags($content[0],'livejournal','feed','feed');
$content[1]=addGAtags($content[1],'livejournal','feed','feed');
$the_event .= apply_filters('the_content', $content[0]);
switch($options['more']) {
case "copy":
$the_event .= apply_filters('the_content', $content[1]);
break;
case "link":
$the_event .= sprintf('<p><a href="%s?utm_source=feed&utm_medium=feed&utm_campaign=feed#more-%s">', get_permalink($post_id), $post_id) .
__('Read the rest of this entry »', LJXP_DOMAIN) .
'</a></p>';
break;
case "lj-cut":
$the_event .= '<lj-cut text="' .
__('Read the rest of this entry &raquo;', LJXP_DOMAIN) .
'">' . apply_filters('the_content', $content[1]) . '</lj-cut>';
break;
}
}
}
Вуаля! Теперь скрипт будет отсылать в ЖЖ меченные ссылки. А мы сможем их отследить с помощью сегментов с расширенными настройками.
Осталось отметить, что я использовал "заданный заголовок", т.к. умолчальный текст подвергается локализации (придется править файл локализации, а мне это делать лень).
Вопросы приветствуются
И если кому оказался полезным данный способ - не забудьте отписаться в комментариях.
Популярность: 25%
Связанные записи
Распечатать запись

Оставить комментарий или два