Как расшаривать отдельные посты прямо с главной
Никогда не знаешь, на чем можно споткнуться, развивая собственный блог. Вот, например, один мой читатель обнаружил, что социальные кнопки, которые он поставил на главной странице, при нажатии расшаривают не отдельный пост — а основной урл его блога. Это, конечно, совершенно естественная ситуация. С другой стороны — исправить ее нетрудно. Но, если уж возник вопрос — нужно ответить!
Немного теории о кодах кнопок
Чтобы эта публикация стала не просто сухой инструкцией к действию, давайте обсудим несколько общих вопросов. Например:
как вообще кнопка «узнает» адрес ссылки, который нужно передать в социальную сеть?
Посмотрим на код кнопки. пусть это будет код для Я.ру (я убрала ссылку на иконку кнопки):
<a rel="nofollow" target="blank" href="http://my.ya.ru/posts_share_link.xml?url=<?php the_permalink(); ?>&title=<?php the_title(); ?>"></a>
В атрибуте href сначала прописан адрес самой соцсети, точнее, того ее «отдела», который принимает ссылку, которую мы расшариваем:
http://my.ya.ru/posts_share_link.xml…
Далее следует «ссылка на ссылку», а точнее, указание на урл в виде php функции, которая позволяет передавать в социальную сеть адрес каждой конкретной статьи:
?url=<?php the_permalink(); ?>
Таким образом, весь вопрос состоит в том, какой урл кнопка посчитает permalink (по-русски, это значит «постоянная ссылка»)? Если прописать код кнопок в правильном месте — то будет считываться постоянная ссылка отдельного поста, даже если речь идет о его анонсе на главной. А если вкорячить код куда-нибудь не туда, то расшариваться станет постоянная ссылка главной страницы.
Как выглядит код анонса статьи на главной странице блога
На странице Index.php, которая отвечает за вид главной страницы блога на Вордпресс вывод анонсов может осуществляться по-разному. Сначала ищем строку:
<?php if (have_posts()) : ?><?php while (have_posts()) : the_post(); ?>
И ниже, возможно, будет написано что-то типа:
<h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2> <?php the_content('Далее'); ?> <?php } ?>
То есть, вывод заголовка статьи в виде ссылки на саму статью (опять permalink — постоянная ссылка!). А в следующей строке — вывод содержания (content) до тега more, который визуально будет заменен словом «Далее».
Возможен и такой вариант, с выводом цитаты (excerpt):
<h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2> <?php the_excerpt(); ?><a href="<?php the_permalink() ?>">Далее</a> <?php } ?>
В разных шаблонах Вордпресс возможны различные комбинации, даже присутствие обоих вариантов — на выбор. Важно понимать, где точно выводится анонс отдельной записи. Надеюсь, теперь вам легче будет найти этот фрагмент кода у себя на блоге.
Где прописать код кнопок
Итак, чтобы ваши кнопки отправляли в соцсети урл конкретного поста, а не главной страницы — нужно прописать их код между:
<?php if (have_posts()) : ?><?php while (have_posts()) : the_post(); ?> и <?php } ?>
Конечно, нужно быть готовыми к тому, что у вас на блоге код не будет выглядеть точь в точь, как показано в примере. Наверняка, там будут указания и на картинки в анонсе поста. Возможно, мета-информация о статье, данные для микроразметки и так далее. Но не стоит пугаться этой непохожести — вглядитесь в написанное и найдите соответствия, между «идеальным» пустым кодом и реальным шаблоном Вордпресс.
Мы помним, что код кнопок «обернут» в теги div — значит его нельзя совать между тегами h, a, p. То есть, вставляем его отдельной строкой. Например, так:
<h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2> <a rel="nofollow" target="blank" href="http://my.ya.ru/posts_share_link.xml?url=<?php the_permalink(); ?>&title=<?php the_title(); ?>"></a> <?php the_content('Далее'); ?> <?php } ?>
В этом случае кнопки (у нас в примере одна кнопка Я.ру) будут выводиться под заголовком, но над текстом анонса. А так можно поставить кнопки под анонс:
<h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2> <?php the_content('Далее'); ?> <a rel="nofollow" target="blank" href="http://my.ya.ru/posts_share_link.xml?url=<?php the_permalink(); ?>&title=<?php the_title(); ?>"></a> <?php } ?>
Коды кнопок для разных социальных сетей можно посмотреть здесь. В рубрике «Подарки» есть разные наборы иконок для этих кнопок.
Читайте БлоготеЙ! на Google+ | |
Читайте БлоготеЙ! на Фейсбуке |
Спасибо! После долгого сидения, пришел к тому же самому. Не было знания php, но была идея как реализовать. Методом экспериментов. Получилось расшаривать url-ы отдельных статей в ленте новостей: nebesnoe.info Суть та же что вы описали. Что приятно, теперь у каждой статьи кроме кнопок соцсетей есть единая «голосовалка».
[Ответить]
katyaru отвечает:
Апрель 23rd, 2013 at 13:00
Посмотрела сайт! Хорошо, что все получилось — выглядит красиво, работает. Но и мне польза — написала новую статью))) Удачи Вам!
[Ответить]
Александр отвечает:
Апрель 23rd, 2013 at 13:04
Спасибо за общение! Замечательно что выкладываете эту информацию. Уверен, что не я один искал ответ. Готового решения больше нигде не встречал.
[Ответить]
katyaru отвечает:
Апрель 23rd, 2013 at 13:13
Не хотите поучаствовать в нашем блог-шоу? Расскажете о своем блоге, будет обсуждение (доброжелательное). Вот пост об этом /aktsiya2013/
[Ответить]
Александр отвечает:
Апрель 23rd, 2013 at 13:20
Благодарю за доверие! Это интересно.
В ближайшее время как немного освобожусь, обязательно изучу!
[Ответить]
katyaru отвечает:
Апрель 23rd, 2013 at 13:22
Надеюсь, что надумаете)) Если напишете в личку (на странице «Обо мне», а ответа не последует — пишите прям в комментах (просто иногда админская почта как-то глючит)
[Ответить]
Александр отвечает:
Апрель 23rd, 2013 at 13:25
Хорошо! )
[Ответить]
Да, забыл сказать о важном. Чтобы скрипт не тормозил загрузку контента на сайте, сам скрипт поставил в footer.php перед закрывающимся тегом body. А ту часть, которая заключена в div, разместил в index.php там же, где предложили вы. То есть, теперь, пока читатель просматривает контент, подгружаются кнопки. А если весь код вставить в index.php, то загрузка сайта существенно замедляется.
[Ответить]
katyaru отвечает:
Апрель 23rd, 2013 at 13:04
Да, важное дополнение!
[Ответить]
Попробую обязательно. Когда время найду)
[Ответить]