10 практичных WordPress шорткодов

Шорткоды – пользовательские функции, которые сохраняют время при написании поста в WordPress. Сегодня я хочу представить Вам 10 самых используемых WordPress шорткодов.

Показать скриншот любого сайта


Вы хотите сделать скриншот какого-либо сайта и показать его у себя на сайте? Этот классный шорткод поможет Вам в этом. Скопируйте этот код в файл functions.php:
function wpr_snap( $atts, $content = null ) {
	extract(shortcode_atts(array(
		'snap' => 'http://s.wordpress.com/mshots/v1/',
		'url' => 'http://www.habrahabr.ru/’,
		'alt' => 'Хабр',
		'w' => '400',
		'h' => '300' 
	), $atts));
	$img = '<img 
				src="' . $snap . '' . urlencode($url) . '?w=' . $w . '&h=' . $h . '" 
				alt="' . $alt . '"/>';
	return $img;
}
add_shortcode('snap', 'wpr_snap');

На этом всё. Теперь чтобы посмотреть скриншот хабра, добавьте пост со следующим содержанием:
[snap url="http://www.habrahabr.ru/" alt="Хабрахабр" w="400" h="300"]


Добавить ссылку для пожертвований Paypal


Многие блоггеры размещают подобную ссылку на своем блоге и просят читателей помочь им материально. Если все же PayPal включит для России приём денег, можно добавить этот шортик к себе в functions.php:
function cwc_donate_shortcode( $atts ) {
	extract(shortcode_atts(array(
		'text' => 'Есть мелочь?',
		'account' => 'REPLACE ME',
		'for' => 'Habr',
	), $atts));
	global $post;
	if (!$for) $for = str_replace(" ","+",$post->post_title);
	return '<a 
			class="donateLink" 
			href="https://www.paypal.com/cgi-bin/webscr?cmd=cxlick&business='.$account.'&item_name=Для+'.$for.'">
				'.$text.'
			</a>';
}
add_shortcode('donate', 'cwc_donate_shortcode');

И в нужном месте
[donate]


Приведение email-адреса к кликабельному виду


Любой блог на WordPress конечно же связан со спамом. Если Вы показываете на своём сайте email-адреса пользователей или же свою любимую почту, то можете немного усложнить жизнь спамерам в сборе почты. Просто добавить этот код в functions.php:
function cwc_mail_shortcode( $atts , $content=null ) {
	for ($i = 0; $i < strlen($content); $i++) $encodedmail .= "&#" . ord($content[$i]) . ';';
	return '<a href="mailto:'.$encodedmail.'">'.$encodedmail.'</a>';
}
add_shortcode('mailto', 'cwc_mail_shortcode');

И можете не беспокоиться о своём мыле в базах африканских миллиардеров, которые завещали Вам все, что у них есть. Просто оберните мыло в теги
[mailto]email@yourdomain.ru[/mailto] 


Создание приватного контента


Всегда хочется, чтобы не копипастили контент с сайта. Можно сделать показ определенного контента только зарегистрированным. Добавляем это в functions.php:
function cwc_member_check_shortcode( $atts, $content = null ) {
	if ( is_user_logged_in() && !is_null( $content ) && !is_feed() )
		return $content;
	return '';
}
add_shortcode( 'member', 'cwc_member_check_shortcode' );

И оборачиваем контент в теги
[member]Этот текст доступен для просмотра только хабра-сообществу.[/member] 


Показ PDF в фрейме


Есть хороший способ, чтобы показать содержание pdf-файла на сайте. На помощь приходит Google docs. Добавляем новую функцию в functions.php:
function cwc_viewpdf($attr, $url) {
	return '<iframe 
					src="http://docs.google.com/viewer?url=' . $url . '&embedded=true" 
					style="width:' .$attr['width']. '; height:' .$attr['height']. ';" 
					frameborder="0">Ваш браузер не поддерживает фреймы</iframe>';
}
add_shortcode('embedpdf', 'cwc_viewpdf');

И в контенте для вставки pdf используем данный тег:
[embedpdf width="600px" height="500px"]http://infolab.stanford.edu/pub/papers/google.pdf[/embedpdf] 


“Feed only” контент


Данный шортик позволяет показывать определённый контент только RSS-подписчикам. И опять же добавляем функцию в functions.php:
function cwc_feedonly_shortcode( $atts, $content = null) {
	if (!is_feed())
		return "";
	return $content;
}
add_shortcode('feedonly', 'cwc_feedonly_shortcode');

И оборачиваем контент, хоторый хотим показать подписчикам в теги
[feedonly]Дорогие хабра-подписчики, да храни Вас бог.[/feedonly] 


Ссылка “Retweet”


Многие знают, что твиттер – это генератор трафика для блога. А ретвиты еще больше увеличивают трафик на сайт.
function tweetmeme(){
	return '<div class="tweetmeme">
				<script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script>
			</div>';
}
add_shortcode('retweet', 'tweetmeme');

И в нужном месте
[retweet] 


Показ прикрепленных изображений к посту


Данный шорт может показывать последнее изображение, прикрепленное к посту. Добавим этот шортик в functions.php:
function cwc_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", "cwc_postimage");

И в посте добавим тег
[postimage] 


Видео с Youtube


Если Вы хотите запостить видео с Youtube на своём блоге, то добавим функцию в functions.php:
function cwc_youtube($atts) {
	extract(shortcode_atts(array(
		"value" => '',
		"width" => '475',
		"height" => '350',
		"name"=> 'movie',
		"allowFullScreen" => 'true',
		"allowScriptAccess"=>'always',
	), $atts));
	return '<object style="height: '.$height.'px; width: '.$width.'px">
				<param name="'.$name.'" value="'.$value.'">
				<param name="allowFullScreen" value="'.$allowFullScreen.'">
				<param name="allowScriptAccess" value="'.$allowScriptAccess.'">
				<embed 
					src="'.$value.'" 
					type="application/x-shockwave-flash" 
					allowfullscreen="'.$allowFullScreen.'" 
					allowScriptAccess="'.$allowScriptAccess.'" 
					width="'.$width.'" 
					height="'.$height.'">
				</embed>
			</object>';
}
add_shortcode("youtube", "cwc_youtube");

И в посте можно использовать тег
[youtube value="http://www.youtube.com/watch?v=1aBSPn2P9bg"]


Показ RSS ленты


И на последок, можно показать произольную RSS-ленту в посте с помощью функции
include_once(ABSPATH.WPINC.'/rss.php');
function cwc_readRss($atts) {
	extract(shortcode_atts(array(
		"feed" => '',
		"num" => '1',
	), $atts));
	return wp_rss($feed, $num);
}
add_shortcode('rss', 'cwc_readRss');

и тега
[rss feed="http://feeds.feedburner.com/catswhocode" num="5"]


Оригинал: css.dzone.com

Similar posts

AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 22

    +1
    [youtube — впень. есть штатный [embed], а плагин embedly позволяет встраивать через [embed] почти что угодно откуда угодно — громадный список.
      0
      Embedly, кстати, перехватывает ссылки и так. Просто в HTML-режиме втыкаете ссылку, и вуаля.
        0
        [embed] перехватывает ссылки только если они записаны сами по себе на отдельной строке.
        Слишком легко поймать момент, когда он захватывать не хочет — пробел перед, пробел после, еще какая-либо фигня.
        Обернув же в embed работает гарантированно.
      0
      Круто, спасибо!
        +1
        За первый пункт большое спасибо. Хоть и даст лишнюю нагрузку, но жизнь очень облегчит.
          +7
          Поставьте ссылку на источник, пожалуйста. Даже беглое гугление дало результат. Дата урока — 6 сентября. А по этой ссылке эти же шорткоды + другие опубликованы намного раньше.
            +1
            Судя по префиксам функций — все примеры с сайта CatsWhoCode.com. Вот и оригинал: 10 super useful WordPress shortcodes.

            Так что этот топик — либо неправильно оформленный перевод, либо и вовсе просто копипаст готового перевода.
            0
            «Любой блог на WordPress конечно же связан со спамом...»

            Это как?
            Корявый перевод. Можно было еще написать, что любой email-адрес связан со спамом.
              0
              Спасибо огромное! Теперь я знаю как добавить и свои шорткоды.
                +1
                codex.wordpress.org/Shortcode_API — Подробное описание как создать свой шорткод. Их, щорткоды, кстати оформлять как плагин.
                codex.wordpress.org/Developer_Documentation — Здесь подробная документация о разработке для WordPress
                  +1
                  Прошу прощение за неграмотность поспешил, не проверил:

                  * codex.wordpress.org/Shortcode_API — Подробное описание как создать свой шорткод. Их, шорткоды, лучше оформлять как плагины.
                    0
                    Начал вести блог на Wordpress, поэтому любая инфа интересна по этому поводу.
                      0
                      Чем оформление шорткода, как плагина, лучше, чем добавление его с помощью functiouns.php? C условием, что распространять этот шорткод, к примеру, через репозиторий WP не планируется?
                        0
                        Чисто гипотетически, если вам нужно будет заменить шаблон для WP, думаю будет куда более удобно просто заменить тему и не выковыривать функционал созданный вами в functions.php. Лично мое мнение именно такое.
                          0
                          Я абсолютно уверен, что раз в несколько лет сделать copy-paste фрагмента кода из одного fuctions.php в другой стоит чуть-чуть более низкой нагрузки на сервер. Впрочем, я wp-маньяк, я вообще считаю, что чем меньше плагинов и больше своего кода — тем лучше =)
                            0
                            Ну в таких условиях — да. Но мне часто приходиться использовать код повторно и в таком случае очень удобно выносить код в отдельный плагин. Тем более многие ленятся оформлять Коментарии к коду а из-за этого всё в том же файле, происходит бог знает что, но это уже отдельная история. =)
                          0
                          Плагины стоят выше в очереди исполнения.

                          Если тема скачана с wordpress.org, то обновление темы затрет functions.php
                    +1
                    А еще из статьи я узнал можно просто без лишних движений получать полноразмерный скриншот любого сайта, например: s.wordpress.com/mshots/v1/http%3A%2F%2Fwww.yandex.ru%2F
                    –2
                    Спасибо! Очень полезная статься.
                      0
                      Здорово, правда в шорткоде для e-mail адреса лучше использовать встроенную функцию make_clickable codex.wordpress.org/Function_Reference/make_clickable а видео с YouTube можно просто встатить ссылку на отдельной строке в редакторе и WordPress сам её поймёт. Главное чтобы в теме $content_width был указан, тогда ещё и по ширине правильно подгонит.

                      Only users with full accounts can post comments. Log in, please.