Собрал подборку интересных примеров использования шорткодов в вордпрессе.
Приведение 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]
Показ прикрепленных изображений к посту
Данный шорт может показывать последнее изображение, прикрепленное к посту. Добавим этот шортик в 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]
Добавить кнопку ссылку
Вместо того чтоб делать ссылкой простой текст, можно это сделать в виде шордкода. Так намного удобнее и можно подогнать вид кнопки как вам угодно через CSS.
function mydl($atts) { extract(shortcode_atts(array( "url" => '', "title" => '', ), $atts)); return '<div class="dl"><a title="Скачать '.$title.'" href="'.$url.'" target="_blank">Скачать '.$title.'</a></div>'; } add_shortcode("dl", "mydl");
Чтобы разместить ссылку в пост, надо вставить шорткод в нужное место поста.
[dl url="ЗДЕСЬ ВСТАВЛЯЕМ ССЫЛКУ" title="ЗДЕСЬ ПИШЕМ НАЗВАНИЕ"]
Для оформления кнопки вставляем код в style.css
dl { background: url(/images/dl.png) no-repeat left center; margin:10px; padding:10px; border:1px solid #ccc; background:#fcfcfc; border-radius:3px; -moz-border-radius:3px; -khtml-border-radius:3px; -webkit-border-radius:3px; display:inline-block; } .dl a { padding-left: 24px
Добавляем в пост рекламу от гугла
function showads() { return '<div id="adsense"><script type="text/javascript"><!-- google_ad_client = "pub-12345678"; google_ad_slot = "54321565498"; google_ad_width = 468; google_ad_height = 60; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script></div>'; } add_shortcode('adsense', 'showads');
теперь в нужном месте мы можем вывести рекламу [adsense]
Шорткод вывода любого поста на любой странице
function tr_post_include($atts) { $thepostid = intval($atts[id]); $output = ''; query_posts("p=$thepostid"); if (have_posts()) : while (have_posts()) : the_post(); $output .= get_the_content($post->ID); endwhile; else: // ничего не выводит endif; wp_reset_query(); return $output; } add_shortcode("pst_inc", "tr_post_include");
Пример использования шорткода:
[pst_inc id="XX"]
XX — это ID поста. Довольно простой шорткод: просто указываете ID поста, и его содержимое выводится в нужном месте страницы. Если вы ничего не укажете или укажете несуществующий ID, то шорткод просто ничего не выведет. Шорткод удобен тем, что с его помощью можно обойтись без создания специального шаблона для такой страницы.
Чтобы шоткод работал в виджете
add_filter('widget_text', 'do_shortcode');
Добавить в functions.php и всё заработает.
Как вывести все шорткоды блога
В шаблон надо вставить:
<?php global $shortcode_tags; echo "<pre>"; print_r($shortcode_tags); echo "</pre>"; ?>