На заре создания этого блога мне в голову пришла идея о том, что в этот блог должен писать не только я один. Свежие мысли других блоггеров благотворно повлияют на развитие этого и не только этого сетевого журнала, подумал я тогда, и решил объявить постоянно действующую акцию, в рамках которой, посторонние авторы могут приходить на «Белую Шляпу» и писать здесь свои статьи. Для того, чтобы это было интересно не только мне, но и тем, кто будет писать в гостях, я дал возможность моим посетителям оставлять в своих статьях любые две ссылки. Тематику гостевых статей я ограничил тематикой сайта, которую можно определить по названиям рубрик (смотри сайдбар).
Акция “Гостевой пост”. Допускаются любые ссылки!!! «Гостевой пост» – акция продолжается и не собирается заканчиваться
С течением первого года жизни «Белой Шляпы» было написано 12 гостевых постов. Я считаю, что это приличное количество, при учете того, что среднестатистический блоггер — это человек очень занятой и ему некогда распаляться на всякие там статьи в посторонние блоги.
С открытием новых проектов, ростом показателей «Белой Шляпы» и разными жизненными перипетиями, акция «Гостевой Пост» как-то заглохла и заметки от моих читателей почти перестали публиковаться.
Я решил возродить, вернее, просто напомнить людям о том, что посторонним постам на этом блоге рады до сих пор, их ждут, им рады. Я даже придумал сделать специальный блок в сайдбаре, который показывает последние гостевые посты из соответствующей рубрики. Для этого я применил функцию Тимура Камаева, о которой я писал в предыдущей статье, но прежде, попросил автора немного доработать ее, добавив возможность вывода НИКа автора и его граватар. Тимур очень быстро откликнулся и доделал код специально для меня и то, что получилось, вы можете лицезреть в моем сайдбаре. Скажите, мои дорогие авторы, аватарки которых сейчас видны на всех страницах, вам приятно? Уверен, что все ответят Да! Ну а тех, чьи лица уже не видны, кто писал давно, прошу побеспокоится о подготовке еще одной статьи.
Теперь для того, чтобы вывести последние посты из определенной рубрики, добавив к ним имя автора и его граватар, в файл function.php надо добавить новый код:
/** Последние записи
------------------------------------------------------
$post_num (5) = количество ссылок
$format ('') = {avatar} {author}: {date:j.M.Y} — {a}{title}{/a} ({comments})
$cat ('') = Категории из которых нужно выводить (5,15) или которые нужно исключить (-5, -15), через запятую (одновременно включение и исключение не работает (не имеет смысла) )
$list_tag (li) = Тег списка
*/
function kama_recent_posts ($post_num=5, $format='', $cat='', $list_tag='li', $echo=true){
global $post, $wpdb;$cur_postID = $post->ID;
if ($cat){
$JOIN = "LEFT JOIN $wpdb->term_relationships rel ON ( p.ID = rel.object_id )
LEFT JOIN $wpdb->term_taxonomy tax ON ( tax.term_taxonomy_id = rel.term_taxonomy_id ) «;
$DISTINCT = „DISTINCT“;
$AND_taxonomy = „AND tax.taxonomy = 'category'“;
$AND_category = „AND tax.term_id IN ($cat)“;
//Проверка на исключение категорий
if ( strpos ($cat, '-')!==false )
$AND_category = 'AND tax.term_id NOT IN ('. str_replace ( '-','', $cat ) .')';}
//если нужно показать автора
if ( strpos ($format, '{author}')!==false ){
$JOIN .= „ LEFT JOIN $wpdb->users u ON ( p.post_author = u.ID )“;
$SEL = „, u.user_nicename AS author, u.user_email, u.user_url“;
//если нужно показать аватар (gavatar)
if ( strpos ($format, '{avatar}')!==false )
$av = „<img src='http://www.gravatar.com/avatar/%1\$s?s=40' alt='' />“;
}$sql = „SELECT $DISTINCT p.ID, post_title, post_date, comment_count, guid $SEL
FROM $wpdb->posts p $JOIN
WHERE post_type = 'post' AND post_status = 'publish' $AND_category $AND_taxonomy
ORDER BY post_date DESC LIMIT $post_num“;
$results = $wpdb->get_results ($sql);if (!$results)
return false;
preg_match ('@\{date:(.*?)\}@', $format, $date_m);
foreach ($results as $pst){
$x == 'li1' ? $x = 'li2' : $x = 'li1';
if ( (int)$pst->ID == (int)$cur_postID ) $x .= „ current-item“;
$Title = $pst->post_title;
$a = „<a href='“. get_permalink ($pst->ID) . „' title='{$Title}'>“;if ($format){
$avatar = $av ? sprintf ( $av, md5 ($pst->user_email) ) : '';
$date = apply_filters ('the_time', mysql2date ($date_m[1], $pst->post_date));
$Sformat = str_replace ($date_m[0], $date, $format);
$Sformat = str_replace (
array ('{title}', '{a}', '{/a}', '{author}', '{comments}', '{avatar}'),
array ( $Title, $a, '</a>', $pst->author, $pst->comment_count, $avatar ),
$Sformat
);
}
else $Sformat = „$a$Title</a>“;
$out .= „\n<$list_tag class='$x'>{$Sformat}</$list_tag>“;
}
if ($echo)
return print $out;
return $out;
}
А функция, которую надо добавить в то место, в котором хочется вывести список будет иметь следующий вид:
<?php kama_recent_posts (5, '{avatar}{author}{a}{title}{/a}({date:j M Y}), {comments}','144'); ?>
где 5 — это количество пунктов, которые надо вывести в список, а 144 — это ID рубрики, из которой надо выбрать посты (его вы должны заменить на свое значение)
Результаты, которые выводит функция можно форматировать в основном стилевом файле style.css или в самой функции, вот так, например:
<?php kama_recent_posts (7, '{avatar} Автор: {a}<span style=»font-size:1.6em;font-color:#c00000;font-weight:900;">{author}</span>{/a} <br/>{a}{title}{/a}<br/>({date:j M Y}), {comments} коммент.','144'); ?>
а вот стили для изображения аватара можно задавать только в файле function.php, иначе браузеры Opera, Google Chrome и Internet Explorer совсем откажутся их показывать. Делается это путем добавления к тегу <img> тега <style>. У меня это сделано вот так:
//если нужно показать автора
if ( strpos ($format, '{author}')!==false ){
$JOIN .= « LEFT JOIN $wpdb->users u ON ( p.post_author = u.ID )»;
$SEL = «, u.user_nicename AS author, u.user_email, u.user_url»;
//если нужно показать аватар (gavatar)
if ( strpos ($format, '{avatar}')!==false )
$av = «<img style='float:left; margin-right:7px; padding:2px; border: 1px solid #c00000;' src='http://www.gravatar.com/avatar/%1\$s?s=40' />»;
}
Обратите внимание на то, что аргументы тега <style>, в данном случае, записываются не в кавычках, а в апострофах.
Для того, чтобы опубликовать гостевой пост, надо написать его в любом текстовом формате и послать на мою электропочту, адрес которой можно взять на странице «Контакты». Если тема вашего поста совпадает с темой моего блога, то я сразу же опубликую вашу статью. В текст статьи вы можете включить любые две ссылки, они не будут закрыты для индексации поисковыми системами. Если в вашей статье будут содержаться уникальные решения, придуманные Вами лично и касающиеся WordPress, WEB, PHP и прочего, что касается сайтостроения, я заплачу вам деньги за ваше творение. Если вы считаете, что ваш текст содержит именно такие уникальные решения, то Сумму Вы можете оговорить заранее.
Добро пожаловать. Давайте продвинем наши блоги вместе с помощью постоянно действующей акции «Гостевые посты»
Еще я приглашаю всех дать моему блогу интервью, ведь каждому есть, что рассказать о себе. Для этого вышлите предложение мне на почту, я подготовлю для вас вопросы и вышлю их вам в ответ. В интервью также можно вставить любые две ссылки и несколько своих фотографий. А если вы известный и знаменитый, то я заплачу вам за интервью деньги. Сумму нужно оговорить заранее.
Высылайте Ваши предложения.
Короткая ссылка на этот пост: http://www.eavasi.ru/?p=5793, используйте ее для анонсирования этого поста в Твиттере и других социальных сервисах.
Закладки:акция, акция гостевой пост, Гостевой пост






