Интересные статьи

Красивая форма обратной связи... Предоставление посетителям сайта простого и надежного средства обратной связи – это важнейшая...

Readmore

WordPress. 10 полезных приемов разработки Начиная с прошлого года, рынок тем для WordPress невероятно вырос. В чем же причина? Отличные дизайны,...

Readmore

Создание прототипа с помощью... Grid 960 - это CSS Фреймворк, который позволяет разработчикам быстро конструировать прототипы дизайна....

Readmore

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

Readmore

10 отличных шорткодов для Wordpress Если вы давно ведете свой блог на WordPress, то конечно же знаете, что визуальный редактор позволяет...

Readmore

Очередной блог фрилансера Rss

10 отличных шорткодов для Wordpress

Дата публикации : 31-07-2009 | в рубрике : wordpress

Метки: , , ,

11

wordpress-shortcodesЕсли вы давно ведете свой блог на WordPress, то конечно же знаете, что визуальный редактор позволяет применять к введенному тексту любое форматирование, используя различные тэги. А что если вам требуется вставить небольшой фрагмент php-кода в текст статьи? Именно для таких случаев и были придуманы шорткоды.

Представленные еще в версии WordPress 2.5, шоркоды (shortcodes) являются самым легким способом отображения множества вещей, в записях вашего блога, с помощью вставки очень простого фрагмента кода. И в сегодняшей статье, вы узнаете наиболее полезные из них.

Как работают шорткоды

Существует множество отличных статей о шорткодов WordPress. Если вы раньше не сталкивались с ними, можете почитать следующие статьи (английский язык):

Что касается этой статьи, код, приведенный в примерах, нужно просто вставить в файл functions.php. После этого, шорткоды можно будет использовать в тексте, как показано в секции «Использование».

1. Вывод похожих записей

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

function related_posts_shortcode( $atts ) {
extract(shortcode_atts(array(
'limit' => '5',
), $atts));

global $wpdb, $post, $table_prefix;

if ($post->ID) {
$retval = '<ul>';
 		// Get tags
$tags = wp_get_post_tags($post->ID);
$tagsarray = array();
foreach ($tags as $tag) {
$tagsarray[] = $tag->term_id;
}
$tagslist = implode(',', $tagsarray);

// Do the query
$q = "SELECT p.*, count(tr.object_id) as count
FROM $wpdb->term_taxonomy AS tt, $wpdb->term_relationships AS tr, $wpdb->posts AS p WHERE tt.taxonomy ='post_tag' AND tt.term_taxonomy_id = tr.term_taxonomy_id AND tr.object_id  = p.ID AND tt.term_id IN ($tagslist) AND p.ID != $post->ID
AND p.post_status = 'publish'
AND p.post_date_gmt < NOW()
 			GROUP BY tr.object_id
ORDER BY count DESC, p.post_date_gmt DESC
LIMIT $limit;";

$related = $wpdb->get_results($q);
 		if ( $related ) {
foreach($related as $r) {
$retval .= '<li><a title="'.wptexturize($r->post_title).'" href="'.get_permalink($r->ID).'">'.wptexturize($r->post_title).'</a></li>';
}
} else {
$retval .= '
<li>No related posts found</li>';
}
$retval .= '</ul>';
return $retval;
}
return;
}
add_shortcode('related_posts', 'related_posts_shortcode');

Использование

[related_posts]

2. Отображение Google Chart

Google Charts API, вероятно, самый простой способ создать динамические диаграммы онлайн. Смотрите, как можно сделать шорткод, который облегчит процесс внедрения диаграмм в вашем WordPress-блоге.

function chart_shortcode( $atts ) {
extract(shortcode_atts(array(
'data' => '',
'colors' => '',
'size' => '400x200',
'bg' => 'ffffff',
'title' => '',
'labels' => '',
'advanced' => '',
'type' => 'pie'
), $atts));

switch ($type) {
case 'line' :
$charttype = 'lc'; break;
case 'xyline' :
$charttype = 'lxy'; break;
case 'sparkline' :
$charttype = 'ls'; break;
case 'meter' :
$charttype = 'gom'; break;
case 'scatter' :
$charttype = 's'; break;
case 'venn' :
$charttype = 'v'; break;
case 'pie' :
$charttype = 'p3'; break;
case 'pie2d' :
$charttype = 'p'; break;
default :
$charttype = $type;
break;
}

if ($title) $string .= '&chtt='.$title.'';
if ($labels) $string .= '&chl='.$labels.'';
if ($colors) $string .= '&chco='.$colors.'';
$string .= '&chs='.$size.'';
$string .= '&chd=t:'.$data.'';
$string .= '&chf='.$bg.'';

return '<img title="'.$title.'" src="http://chart.apis.google.com/chart?cht='.$charttype.''.$string.$advanced.'" alt="'.$title.'" />';
}
add_shortcode('chart', 'chart_shortcode');

Использование

[chart data="41.52,37.79,20.67,0.03" bg="F7F9FA" labels="Reffering+sites|Search+Engines|Direct+traffic|Other" colors="058DC7,50B432,ED561B,EDEF00" size="488x200" title="Traffic Sources" type="pie"]

3. Интеграция Adsense ads

Adsense – это самый лучший способ заработать деньги онлайн, и большинство блогеров используют его в целях получения дохода. С помощью виджетов, вы легко сможете добавить Adsense ads в сайдбар вашего блога, но вы сможете получить большее количество кликов от пользователей, если внедрите Adsense в свои записи. Эта задача довольно простая, благодаря шорткодам WordPress.

function showads() {
    return '<script type="text/javascript"><!--
google_ad_client = "pub-3637220125174754";
google_ad_slot = "4668915978";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
';
}

add_shortcode('adsense', 'showads');

Использование

[adsense]

4. Отображение контента только для читателей блога с помощью шорткода WordPress

По прошествии пары месяцев, все больше и больше блогов, создают раздел только для зарегистрированных пользователей. Знаете ли вы насколько легко создать закрытый контент в своем блоге, используя шорткод?

function access_check_shortcode( $attr, $content = null ) {
    extract( shortcode_atts( array( 'capability' => 'read' ), $attr ) );
    if ( current_user_can( $capability ) && !is_null( $content ) && !is_feed() )
        return $content;

    return 'Sorry, only registered members can see this text.';
}

add_shortcode( 'access', 'access_check_shortcode' );

Использование

[access capability="switch_themes"]

5. Встроенный RSS-ридер

Другая, замечательная вещь в WordPress – это встроенный RSS-ридер, который используется для отображения фидов в вашей панели управления. Вы можете использовать его в сайдбаре блога (или в заголовке, подвале и т.д.), но с шорткодом, вы можете встроить его в свои записи.

//This file is needed to be able to use the wp_rss() function.
include_once(ABSPATH.WPINC.'/rss.php');

function readRss($atts) {
    extract(shortcode_atts(array(
"feed" => 'http://',
      "num" => '1',
    ), $atts));

    return wp_rss($feed, $num);
}

add_shortcode('rss', 'readRss');

Использование

[rss feed="http://feeds2.feedburner.com/Catswhocode" num="5"]

6. Автоматическое создание короткого url для Твиттера

Если у вас есть аккаунт на Твиттере, вы знаете, насколько удобны короткие url. Но когда вы хотите разместить ссылку на свою статью в Твиттере, вы часто пренебрегаете возможностью создания короткого url. А как насчет того, чтобы использовать шорткод, для облегчения жизни вашим читателям?

function subzane_shorturl($atts) {
extract(shortcode_atts(array(
'url' => '',
'name' => '',
), $atts));
$request = 'http://u.nu/unu-api-simple?url=' . urlencode($url);
$short_url = file_get_contents($request);
if (substr($short_url, 0, 4) == 'http')    {
$name = empty($name)?$short_url:$name;
return '<a href="'.$short_url.'">'.$name.'</a>';
} else {
$name = empty($name)?$url:$name;
return '<a href="'.$url.'">'.$name.'</a>';
}
}
add_shortcode('shorturl', 'subzane_shorturl');

Использование

[shorturl name="shortcode" url="http://codex.wordpress.org/Shortcode_API"]

7. Отображение последней картинки, прикрепленной к записи

Вместо того, чтобы использовать url картинки, воспользуйтесь простым шорткодом, который может отобразить последнее изображение, прикрепленное к записи:

function sc_postimage($atts, $content = null) {
extract(shortcode_atts(array(
"size" => 'thumbnail',
"float" => 'none'
), $atts));
$images =& get_children( 'post_type=attachment&post_mime_type=image&post_parent=' . get_the_id() );
foreach( $images as $imageID => $imagePost )
$fullimage = wp_get_attachment_image($imageID, $size, false);
$imagedata = wp_get_attachment_image_src($imageID, $size, false);
$width = ($imagedata[1]+2);
$height = ($imagedata[2]+2);
return '<div class="postimage" style="width: '.$width.'px; height: '.$height.'px; float: '.$float.';">'.$fullimage.'</div>';
}
add_shortcode("postimage", "sc_postimage");

Использование

[postimage]

8. Добавление заметок администратора к записям

Если вы владелец блога с множеством авторов, возможно вам понадобится возможность оставлять сообщения к записям, которые будут видны только другим администраторам. Например, владелец блога, может добавить сообщение к записи, в котором просит автора статьи исправить ошибку, или добавить больше информации.

add_shortcode( 'note', 'sc_note' );

function sc_note( $atts, $content = null ) {
if ( current_user_can( 'publish_posts' ) )
return '<div class="note">'.$content.'</div>';
return '';
}

Использование

[note]This is a personal note that only admins can see![/note]

9. Удаление автоматического форматирования WordPress

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

function my_formatter($content) {
$new_content = '';
$pattern_full = '{(\[raw\].*?\[/raw\])}is';
$pattern_contents = '{\[raw\](.*?)\[/raw\]}is';
$pieces = preg_split($pattern_full, $content, -1, PREG_SPLIT_DELIM_CAPTURE);

foreach ($pieces as $piece) {
if (preg_match($pattern_contents, $piece, $matches)) {
$new_content .= $matches[1];
} else {
$new_content .= wptexturize(wpautop($piece));
}
}

return $new_content;
}

remove_filter('the_content', 'wpautop');
remove_filter('the_content', 'wptexturize');

add_filter('the_content', 'my_formatter', 99);

Использование

[raw]This portion of text will not be automatically formatted by WP.[/raw]

10. Отображение статистики вашего блога с помощью шорткодов

Вы когда-нибудь хотели отобразить статистику собственного блога, в реальном времени? Спасибо Wesley и его плагину «Blog Stats», с его помощью вы сможете отображать такие статистические данные как: количество записей, количество комментариев, среднее количество комментариев к записям, google pagerank и т.д., используя шорткоды.

Плагин Blog Stats можно скачать отсюда, устанавливается он точно также, как и обычные плагины.

Использование

[pagerank]
[feedburner_subscribers]
[alexa_rank]
[technorati_authority]
[technorati_rank]
[user_count]
[post_count]
[page_count]
[comment_count]
[trackback_count]
[avg_comments_per_post]
[category_count]
[tag_count]
[link_count]
[google_backlinks]
[yahoo_backlinks]
[delicious_bookmarks]

Перевод статьи «10 incredibly cool WordPress shortcodes«, автор Jean-Baptiste Jung

Похожие записи

Комментарии: (11)

Но ведь все это реализовано в плагинах. Разве не проще их установить и включить? :)

Возможно кому-то это действительно будет проще. Шорткоды – это альтернативный способ добавления различной фукнциональности именно в текст записи. Кто знает, может вы сможете в дальнейшем создать свой шорткод, аналога которому не будет среди плагинов :)

Скорее всего и такой шорткод кто-то реализует в виде плагина. Все-таки большинство пользователей не программисты, а управляться с плагинами проще.
С другой стороны, шорткоды имеют большую гибкость, ибо их можно быстрее и проще отредактировать и привести к нужному виду.

Совершенно верно, к тому же не забывайте про разработчиков, шорткоды, конечно, в первую очередь будут интересны им

Спасибо) Очень классная статья)

т.е. по существу это пользовательские функции, расширяющие функционал

А существуют ли коллекции шорт-кодов?

Насчет коллекций не знаю, мне не попадались. Попробуйте создать свою ;)

Интересный способ. не знала, что такой существует.
Спасибо, возьму на вооружение.

Спасибо, интересная подборка.
А может быть вы в курсе как в Wordpress не используя плагин Recent Comments можно вывести последние комментарии. Хочется как-то побороть прожорливость памяти на своем блоге…

А в чем отличие от функций?

Шорткоды – это те же функции, отличие в том, что их можно вызывать в визуальном редакторе

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