вторник, 1 декабря 2009 г.

10 полезных приемов и техник программирования Wordpress - #7 Показываем контент только зарегистрированным пользователям

Показываем контент только зарегистрированным пользователям

Проблема.

Как вы, наверное, знаете, Wordpress позволяет вам разрешать пользователям создавать свои аккаунты и входить в ваш блог под своими учетными записями. А почему бы не сделать часть материалов доступными только для зарегистрированных пользователей? Ну, чтобы они чувствовали себя более значимыми, что ли…

Решение.

Чтобы этот хак заработал, нужно использовать т.н. shortcode (что-то вроде BB-кода). Попробуем это сделать, для чего откроем файл functions.php и вставим в него нижеследующий код:

function member_check_shortcode($atts, $content = null) {
if (is_user_logged_in() && !is_null($content) && !is_feed()) {
return $content;
} else {
return 'Простите, но эта информация доступна только зарегистрированным пользователям!';
}

add_shortcode('member', 'member_check_shortcode');

Теперь вы можете заключать любой контент в shortcode [member]Ваш контент тут[/member], и он будет виден только зарегистрированным пользователям:

[member]
Этот текст будет доступен только зарегистрированным пользователям.
[/member]

Вот и все. А незарегистрированные пользователи будут видеть сообщение с просьбой зарегистрироваться.

Объяснение кода.

Первое, что мы делаем, - это создаем функцию member_check_shortcode, которая проверяет, вошел ли пользователь под своим логином. Если да, то показывается информация, заключенная в shortcode [member]. Если нет, то будет показано сообщение, которое находится на строке номер 5.


Постовые.
Любите карты? Вам сюда: blackjack online.

Хотите праздника - щелкайте по ссылке: корпоративные мероприятия в Подмосковье.

Ищите что-то интересненькое? Уже нашли: интересные блоги!

10 полезных приемов и техник программирования Wordpress - #6 Добавляем множественные сайдбары

Добавляем множественные сайдбары

Проблема.

Вообще, сайдбар – это круто, так как в них мы можем отображать много очень полезной информации, как-то: похожие посты, информацию об авторе блога или поста, ленту блогов, рекламу и т.д. Но сайдбар можно очень легко забить информацией так, что читатель не всегда может найти то, что ищет. А это очень нехорошо. Что вы скажите про то, чтобы использовать различные сайдбары, наиболее подходящие для данного поста?

Решение.

Чтобы использовать этот хак, скопируйте ваш файл sidebar.php и наполните его необходимой информацией. Сохраните этот файл как sidebar-whatever.php.

Как только вы это сделаете, откройте файл single.php* и найдите в нем вызов функции get_sidebar():

<?php get_sidebar(); ?>

Измените его на:

<?php $sidebar = get_post_meta($post->ID, "sidebar", true);
get_sidebar($sidebar);
?>

После того, как вы сделаете это, создайте произвольное поле sidebar. Установите его значение как имя желаемого сайдбара. Например, если значение поля – right, то Wordpress автоматически подключит файл sidebar-right.php.

Если вы не зададите значение поля sidebar, то Wordpress автоматически подключит сайдбар по умолчанию.

*То же самое проделайте с файлом index.php.

Объяснение кода.

Этот трюк очень прост. Первое, что мы делаем, - создаем произвольное поле sidebar и задаем ему значение. Потом, оно используется как аргумент функции get_sidebar(), которая позволяет подключать соответствующие файлы сайдбаров.


Постовые.
Свой дом? Тогда вам нужна тепловая пушка с доставкой.

А может вас интересует доставка снегоуборочных машин?

понедельник, 30 ноября 2009 г.

ДУХLESS

Где-то год назад, а может и еще раньше, один мой дружище рассказал мне про книжку Сергея Минаева "ДУХLESS". Тогда я, будучи очень категоричным, сказал ему, что Минаев - это сраная попса, которую не то, что читать - даже в руки брать не хочется. Но тогда я ошибался. Предвзятость суждение до добра не доводит.
Книга не замечательная, но, по-моему, хорошая: очень адекватно и, что главное, точно вырисовываются все наши проблемы. Конечно, "пиздеть - не мешки ворочать", но глазки в процессе прочтения на какие-то моменты открываются. Особенно, в те моменты, когда начинаешь находить какие-то сходства между собой и безымянным (можно подставить и свое имя) главным героем. Все мы (большей частью) - паразиты, живущие за счет себе подобных. Замкнутый порочный круг какой-то. Пессимисты не видят способ того, как его можно разорвать; оптимисты - видят; реалисты - блуждают где-то посередине.
Так как я отношусь к оптимистичным реалистам (или к реалистичным оптимистам), то ухватился за одну, по-моему, красивую метафору: в одно прекрасное утро главный герой начинает воспринимать все как чистый лист. И в этой метафоре есть надежда на то, что не все потеряно. Действительно, потеряно не все. Вот тогда, когда не останется ни одного человека, который будет осознавать, в каком мире мы живем и что творим - тогда все и исчезнет. В самом прямом смысле.

10 полезных приемов и техник программирования Wordpress - #5 Простая замена заголовка поста

Простая замена заголовка поста

Проблема.

the_title() – это базовая, но очень полезная Wordpress-функция: она отображает пост или заголовок страницы. Но вы же наверняка хотели отображать полное название страницы в списке постов, а на странице, которая соответствует конкретному посту – сокращенный или произвольный заголовок.

Решение.

В файле single.php найдите участок кода, где вызывается функция the_title() и замените его на следующий:

<?php $title = get_post_meta($post->ID, "custom-title", true);
if ($title != "") {
echo "<h1>".$title."</h1>";
} else { ?>
<h1><?php the_title(); ?></h1>
<?php } ?>

Объяснение кода.

Как только этот код загрузится, то будет извлечено поле custom-title. Если это мета-поле существует и оно непустое, то оно будет отображаться в качестве заголовка поста. В противном случае, будет вызвана функция the_title(), которая отобразит стандартный заголовок поста.


Постовые.
Делаете ремонт? Тогда вас наверняка интересует выбор водонагревателей в магазине.

Хотите открыть автомойку или ищите оборудование для мытья своей собственной машины? Вам сюда: официальный дилер Karcher!

10 полезных приемов и техник программирования Wordpress - #4 Используем множественные циклы

Используем множественные циклы

Проблема.

Если использовать при программировании сложных Wordpress-страниц более одного цикла, то может случиться так, что один из них будет работать неверно: например, будут повторяться посты и т.д. К счастью, существует очень полезная функция, которая позволяет избежать всех этих неприятностей.

Решение.

Следующий пример включает в себя использование двух циклов. Обратите внимание на функцию rewind_posts(), которая используется в строке номер 8. Этот пример можно использовать в любом Wordpress-файле, который использует циклы, как то: index.php, simple.php и т.д.

<?php query_posts('category_name=featured&showposts=3'); ?>
<?php while (have_posts()) : the_post(); ?>
<!-- Do stuff... -->
<?php endwhile;?>

//loop reset
<?php rewind_posts(); ?>

//Second loop (Get all posts)
<?php while (have_posts()) : the_post(); ?>
<!-- Do stuff... -->
<?php endwhile; ?>

Объяснение кода.

Этот кусочек кода не использует никаких хаков: rewind_posts() – это стандартная функция Wordpress.

rewind_posts() как бы «очищает» результат работы предшествующего цикла (вторая строка в нашем примере), что позволяет использовать второй цикл независимо от результата выполнения первого.


Постовые.
Хотите отдохнуть в Италии, но не знаете, куда обратиться? Тогда вам сюда: экскурсионный тур в Италию.

А если далеко ехать не хотите, то вам сюда: отдых в Подмосковье.

Хотите узнать, какие SMS получает ваша подруга, но не знаете, где скачать смс перехватчик?

воскресенье, 29 ноября 2009 г.

10 полезных приемов и техник программирования Wordpress - #3 Альтернативная стилизация постов на главной странице

Альтернативная стилизация постов на главной странице

Проблема.

Много новых Wordpress-тем имеют поразительные возможности по отображению постов на главной странице. Например, можно отображать первые три поста несколько большими, чем остальные (с изображениями и расширенным текстом), а остальные посты показывать в более простом виде.

Существует множество тем, разработчики которых используют два различных цикла для достижения целей, указанных в примере. А это неправильно и может привести к нежелательным последствиям. Далее будем использовать более простой метод.

Решение.

Вот произвольный пользовательский цикл, который первые три поста отображает в немного более интересном виде, нежели остальные. Вы можете заменить стандартный цикл в файле index.php на этот:

<?php
$postnum = 0;
while (have_posts()) : the_post(); ?>

<?php if ($postnum <= 3){ ?>
<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
<div class="date"><span><?php the_time('M j') ?></span></div>
<h2>(<?php echo $postnum;?>)<a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
<div class="post-image" style="text-align:center;">
<a href="<?php the_permalink() ?>"><img src="<?php bloginfo('template_directory' ); ?>/timthumb.php?src=<?php echo catch_that_image(); ?>&w=500&h=200&zc=1" alt="<?php the_title(); ?>" /></a>
</div>
<p><?php the_content('Read the rest of this entry »'); ?></p>
<p class="more"><a href="#">Read More</a></p>
</div>
</div>

<?php } else {
<div <?php post_class( 'single ' . $end ); ?> id="post-<?php the_ID(); ?>">
<div class="post-content">
<h3><a href="<?php the_permalink() ?>">(<?php echo $postnum; ?>)<?php the_title(); ?></a> <?php edit_post_link('_', '', ''); ?></h3>
<p><?php the_excerpt( '' ); ?></p>
<p class="more"><a href="#">Read More ?</a></p>
</div>
</div><!-- End post -->

<?php }
endwhile;
?>

Объяснение кода.

Тут нет ничего сложного. Мы просто создаем PHP-переменную $postnum. Если значение переменной $postnum меньше или равно 3, то выводим посты в более интересном виде. Если же значение $postnum больше 3, то посты выводятся в более компактном виде. Вот и все.


Постовые.
Сделали ремонт? Ну тогда вам могут понадобятся угловые шкафы купе или прихожие шкафы.

пятница, 27 ноября 2009 г.

10 полезных приемов и техник программирования Wordpress - #2 Показываем похожие посты… С иконками!

Показываем похожие посты… С иконками!

Проблема.

Что делают читатели, после прочтения вашего последнего поста? Ну, обычно, они закрывают вкладку браузера с вашим блогом. Лучший путь этого избежать – показать в конце поста список постов, похожих по содержанию на него. Для этого существует множество плагинов, но если вы хотите знать, как это работает, то посмотрите на код ниже – он выводит похожие посты и иконки для них.

Решение.

Просто вставьте нижележащий код после функции the_content() в файле single.php:

<?php
$original_post = $post;
$tags = wp_get_post_tags($post->ID);
if ($tags) {
echo '<h2>Related Posts</h2>';
$first_tag = $tags[0]->term_id;
$args=array(
'tag__in' => array($first_tag),
'post__not_in' => array($post->ID),
'showposts'=>4,
'caller_get_posts'=>1
);
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
echo "<ul>";
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<li><img src="<?php bloginfo('template_directory'); ?>/timthumb/timthumb.php?src=<?php echo get_post_meta($post->ID, "post-img", true); ?>&h=40&w=40&zc=1" alt="" /><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php endwhile;
echo "</ul>";
}
}
$post = $original_post;
wp_reset_query();
?>

Объяснение кода.

Ну, во-первых, используется скрипт TimbThumb, который делает иконку размером 40 на 40 пикселей.

Как только вы вставите этот код в тему, он будет показывать похожие посты, используя для их выборки первый тэг просматриваемого поста. В этом примере показывается 4 похожих поста. Это количество вы можете изменить в строке 10.

Кроме того, следует заметить, что значение переменной $post записывается в переменную $original_post в начале кода и восстанавливается в конце. Это необходимо для того, чтобы избежать некоторых неприятностей (например, чтобы выводились родные комментарии поста, а не те, которые привязаны к другому).


Постовые.
Ищите путевки в финляндию? Считайте, что уже нашли. :)

четверг, 26 ноября 2009 г.

10 полезных приемов и техник программирования Wordpress - #1 Индивидуальная стилизация постов

Индивидуальная стилизация постов

Проблема.

В вашем блоге, скорее всего, очень много постов. Но все они визуально похожи друг на друга. Для того, чтобы избавиться от этой серости, чтобы придать одному или нескольким постам индивидуальное оформление, нужно использовать функцию post_class() и идентификатор поста (функция the_ID()).

Решение.

Чтобы использовать этот трюк, нужно открыть файл single.php (лежит в папке выбранной темы), найти в нем место, где вызывается loop и заметь его на нижеприведенный код:

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
<h3><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h3>
<?php the_content(); ?>
</div>
<?php endwhile; else: ?>
<?php _e('Sorry, no posts matched your criteria.'); ?>
<?php endif; ?>

Объяснение кода.

Наиболее важной является строка №3, в которой мы добавляем функцию post_class(). Представленная в WP 2.8, эта функция (как видно из названия) добавляет определенный CSS-класс к посту. К примеру, она может добавить:

  • .hentry
  • .sticky
  • .category-tutorials
  • .tag-wordpress

При помощи этих классов вы можете оформить одинаково все посты с тэгом sticky или все посты, относящиеся к категории tutorials.

Также, очень важным является кусочек кода, где написано id="post-<?php the_ID(); ?>". Если у поста будет прописан идентификатор (ID), то ему присвоится индивидуальный класс. К примеру:

#post-876{
background:#ccc;
}

Постовые.
Строите и вам нужна сварная сетка? Не вопрос!

А может вам нужны металлические двутавры? Обращайтесь в группу компаний "МАРТ".

Оживим бложеньку!

Что-то надоело мало писать. Особенно, писать не по делу. Буду это исправлять: планируется серия статей (переводов) всяких разных материалов по Wordpress, jQuery, CSS, PHP и т.д. От маленьких заметочек до достаточно больших материалов. При самых благоприятных обстоятельствах - каждый день по посту. А там - посмотрим. :)

вторник, 24 ноября 2009 г.

Ну вот как-то так...

Главная проблема русских людей - в том, что они готовы сколь угодно долго сидеть на жопе, ныть и говорить, что все хуево. А вот что-нибудь делать они категорически не хотят. В этом свете очень забавно выглядит мысль главного героя книги Сергея Минаева "ДУХLESS", который говорит следующее: "Будь я на месте ребят из Nike, я бы точно сменил промо-слоган для территории России с "Just do it" на "Do something". И он абсолютно прав. Особенно мерзко становится, когда являешься свидетелем ругани, в ходе которой ругающиеся выливают друг на друга гектолитры дерьма... А ведь что проще всего, а?! Конечно, орать друг на друга, но нихуя не делать.
Если подумаете, что в этом посте нет позитива, то будете неправы. Этот пост - своеобразный демотиватор. Просто нужно сделать выводы.
P.S. Книга, упомянутая выше, чертовски хороша. Так что советую к прочтению. Собственно пост именно ей и навеян. :)