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

коротко и полезно о веб-разработке

Menu Close

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

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

Рассказать друзьям

Понравилась статья? Лучший способ сказать спасибо - поделиться ссылкой в социальных сетях: