Здравствуйте! Давно я не писал в блог. А еще дольше я не писал в блоге о WordPress, на котором, собственно, и работает мой «бортовой журнал». Но, пришло время исправить этот недостаток. Благо дело на гала попала интересная статья о 10 полезных сниппетах WordPress на заокеанском блоге. Она и стала источником этого поста, в котором я позволил себе удалить лишь один сниппет, который не столь актуален в Рунете, ввиду существования большого количества довольно добротных плагинов для воспроизведения подобного функционала. А в остальном, получился очень полезный материал.
1. Список страниц и категорий в виде выпадающего меню, с возможность исключения некоторых категорий и ограничения вывода субкатегорий
Этот сниппет будет выводить категории в виде неупорядоченного списка с сортировкой по ID, глубина категорий ограничена до трех уровней в низ и вы можете исключить категории по ID, разделив значения запятой.
<ul> <?php wp_list_categories('orderby=ID&order=ASC&depth=3&title_li=&exclude='); ?> </ul> |
Источник – Codex. Например, я хочу создать список с глубиной вложенности 2 и категориями с ID 12 b 13:
<ul> <?php wp_list_categories('orderby=ID&order=ASC&depth=2&title_li=&exclude=12,13'); ?> </ul> |
Если нужно вывести список страниц вместо категорий, то просто измените wp_list_categories на wp_list_pages.
2. Вывод наиболее популярных постов основываясь на числе комментариев
Наиболее простой и быстрый способ вывода популярных постов без плагинов с возможностью легкой интеграции в тему:
<ul> <?php $result = $wpdb->get_results("SELECT comment_count,ID,post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , 5"); foreach ($result as $post) { setup_postdata($post); $postid = $post->ID; $title = $post->post_title; $commentcount = $post->comment_count; if ($commentcount != 0) { ?> <li><a href="<?php echo get_permalink($postid); ?>" title="<?php echo $title ?>"> <?php echo $title ?></a> {<?php echo $commentcount ?>}</li> <?php } } ?> </ul> |
3. Вывод последнего прилепленного поста
Полезен для большинства тем в формате журнала. вывести прикрепленный пост вы можете с помощью кода ниже:
<?php /* Get all sticky posts */ $sticky = get_option( 'sticky_posts' ); /* Sort the stickies with the newest ones at the top */ rsort( $sticky ); /* Get the 2 newest stickies (change 2 for a different number) */ $sticky = array_slice( $sticky, 0, 2 ); /* Query sticky posts */ query_posts( array( 'post__in' => $sticky, 'caller_get_posts' => 1 ) ); ?> |
4. Вывод meta информации, включая автора, теги, количество комментариев и дату публикации
Мета информация выводится почти во всех темах. Код ниже будет sdjlbnm данные в виде: «Опубликовал _автор _дата, с _число_комментарием комментариями и метками: _метки.
Опубликовал <?php the_author(); ?> <?php the_time('n/d/y'); ?>, с <?php comments_number('no', 'one', '%'); ?> комментариями и метками: <?php the_tags(); ?> |
5. Создаем область для виджетов с комментариями как использовать ее если виджеты не заданы
Если вы хотите позаботится о пользователях вашей темы и разрешить им с легкостью вставлять нужные данные, то стоит подумать об использовании виджетов. В любом случае конечный пользователь не всегда знает как много регионов с виджетами в использовали в теме. А данный код поможет показать регионы с виджетами и подсказками как использовать эти области если виджеты не заданы.
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Widget Area') ) : ?> <h3>Область виджетов</h3> <p>Это область вывода виджетов. Для того чтобы ее заполнить используйте инструмент виджетов</p> <?php endif; ?> |
Также вам понадобится следующий код в вашем файле functions.php:
<?php if ( function_exists('register_sidebar') ) register_sidebar(array( 'name' => 'Widget Area', 'before_widget' => 'you might want a <div class...> here', 'after_widget' => 'and a closing </div> here', 'before_title' => 'you might want a <h3> or <h4> here', 'after_title' => 'and </h3> or </h4> here', )); ?> |
6. Вывод «Хлебных крошек» Главная / Категория / Заголовок поста
«Хлебные крошки» важный элемент навигации, тем более, если ваш сайт имеет сложную многоуровневую структуру. И с помощью кода ниже вы можете вывести навигацию вида — Главная / Категория / Заголовок поста:
<?php bloginfo(‘home’); ?> / <?php the_category(); ?> / <?php the_title(); ?> |
7. Правильная вставка jQuery
Это очень важная вещь, поскольку сегодня многие темы используют JavaScript эффекты построенные на основе этой библиотеки! Код ниже позволяет вставить собственную копию jQuery из ядра WordPress:
<?php wp_enqueue_script("jquery"); ?> |
Его нужно вставить до wp_head тега.
8. Присваиваем тегу класс согласно типа страницы, ID поста/страницы и категории category
Это прекрасный сниппет, который взят из Thematic framework и должен быть помещен в ваш файл functions.php. Нужно поместить следующий код в functions.php файл:
<?php // Генерируем семантические класс для BODY function thematic_body_class( $print = true ) { global $wp_query, $current_user; // Это действительно Wordpress блог? $c = array('wordpress'); // Устанавливаем классы по дате и времени для BODY thematic_date_classes( time(), $c ); // Генерируем семантические классы по типу выводимого контента is_front_page() ? $c[] = 'home' : null; // For the front page, if set is_home() ? $c[] = 'blog' : null; // For the blog posts page, if set is_archive() ? $c[] = 'archive' : null; is_date() ? $c[] = 'date' : null; is_search() ? $c[] = 'search' : null; is_paged() ? $c[] = 'paged' : null; is_attachment() ? $c[] = 'attachment' : null; is_404() ? $c[] = 'four04' : null; // CSS does not allow a digit as first character // Специальные классы для BODY когда находимся в виде одного поста if ( is_singular() ) { $c[] = 'singular'; } else { $c[] = 'not-singular'; } <pre> <a href="http://wpshout.com/wp-content/uploads/2009/09/dynamic-class.txt">Загрузить весь код сниппета можно здесь</a> и потом заменить <strong><body></strong> в теме на: <pre lang="php"> <body class="<?php bodystyle(); ?>" > |
10. Используем custom fields для вывода изображений (и ресайзим их с помощью timthumb), с помещением альтернативной картинки, если картинки не существует.
Этот сниппет позволяет вам добавить custom field «Изображение» (Image — именно такое машинное имя должно иметь поле), которое потом будет уменьшено с помощью timthumb (который нужно загрузить в /ваша_тема/scripts/) и выведено в виде превью на странице архива или на главной. Если поле «Изображение» не будет обнаружено, то выведется картинка-заглушка. Код сниппета ниже:
<?php $postimageurl = get_post_meta($post->ID, 'Image', true); if ($postimageurl) { ?> <img src="<?php bloginfo(‘template_url’); ?> /scripts/timthumb.php?src=<?php echo get_post_meta($post->ID, "Image", true); ?>&h=250&w=250&zc=1" alt="<?php the_title(); ?>" /> <?php } else { ?> <img src="<?php bloginfo('template_url'); ?>/images/noimage.jpg" alt="No image available" /> <?php } ?> |
P.S. мысли о том, чего не хотелось бы…
Да, всякое бывает. Бывает, что вот — ты красавец-мужчина и все ukranian models смотрят на тебя с неподдельным желанием. А ты… Ты тратишь свои миллионы на лечение простатита и твоя страсть уже давно не модели, а дизайн интерьера квартир, который позволяет внести хоть немного цветов в серость жизни… Вот чего не хотелось бы испытать никогда!
12 ответов к “9 полезных сниппетов для WordPress”
Чувак, вот за этот пост — отдельное спасибо! Как все действительно великое, это требует переосмысления перед применением! Ухожу думать, вернусь через пару дней.
Яха, всегда пожалуйста 🙂
Спасибо! пригодится
Кое-что сделаю у себя на блогеhttp://www.diros.de/
Вопрос по пункту 10.
Как к изображению добавить вывод подписи (caption)?
Спасибо, взял на заметку. Попробую на практике поюзать.
У меня такой вопрос. Хотел бы вставить в блог визуализацию на основе скрипта MooWheel (http://labs.unwieldy.net/moowheel/ ). Но кроме того, что приходится его код вставлять в head’ер, так еще и не работает. Можно избежать обязательного употребления скриптов в хедере, переносить их в бади и чтобы JavaScript и Ajax работали?
можно, только учти, что все эти скрипты могут не работать из-за конфликта друг с другом. Попробуй запихнуть в iframe
куда это вписывать, сори за глупый вопрос.
Доброго времени суток, я начинающий, и ещё малознающий вебмастер)
вот вывел свой сайт по запросу (восточная культура) на первое место в яндексе, а трафика 10челов в день, хотя в вордстате 3к в месяц запрашивает, и мне подсказали что снипет нужно нормальный поставить, и трафика больше будет. Подскажите куда мне его лучше впихнуть? текст я уже сбацал, просто не знаю как оформить, если не в напряг будет) east-culture.ru
Огромное вам спасибо.