Шорткоды – удобнейшая штука. Не нужно запоминать какие-то длинные кодовые конструкции, просто вставил пару слов – и получил результат. Шорткоды можно употреблять везде – в постах, на страницах, и даже внутри шаблона. Привожу примеры нескольких шорткодов, которые могут облегчить вам использование блога, сделают его более удобным и функциональным.
- Google Adsense
- Google Chart
- Вставка видео из YouTube
- Похожие записи
- Выполняемый PHP-код в посте
- Отображение последней, прикрепленной к записи, миниатюры картинки
- Вставка изображений в комментариях
- Вывод записей из любого RSS фида
- Текст только для пользователей с определенными правами
- Пометки администратора
- Шорткод постоянной ссылки
- Отмена автоматического форматирования
Google Adsense
Чтобы вручную вставлять контекстную рекламу Google в любом месте поста или страницы, можно использовать шорткод:
function showads() { return '<!-- google_ad_client = "pub-XXX"; google_ad_slot = "4662548978"; google_ad_width = 468; google_ad_height = 60; //--> '; } add_shortcode('adsense', 'showads');
Шоркод:
[adsense]
Google Chart
Можно внедрять диаграммы, которые создает Google Chart, непосредственно в посты и на страницы.
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 ''; } 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="Трафик" type="pie"]
Вставка видео из YouTube
Чтобы не копировать код, который может быть потерян при редактировании поста автором, можно использовать шорткод, автоматически вставляющий видео из YouTube.
function youtube($atts) { extract(shortcode_atts(array( "value" => 'http://', "width" => '640', "height" => '390', "name"=> 'movie', "allowFullScreen" => 'true', "allowScriptAcodeess"=>'always', "controls"=> '1', ), $atts)); return ''; } add_shortcode("youtube", "youtube");
Шорткод:
Похожие записи
Вывод 5 похожих записей списком.
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 get_results($q); if ( $related ) { foreach($related as $r) { $retval .= '<li><a>post_title).'" href="'.get_permalink($r->ID).'">'.wptexturize($r->post_title).'</a></li>'; } } else { $retval .= ' <li>Похожих записей пока нет...</li>'; } $retval .= '</ul>'; return $retval; } return; } add_shortcode('related_posts', 'related_posts_shortcode');
Шорткод:
[related_posts]
Выполняемый PHP-код в посте
Чтобы вставить выполняемый PHP-код в содержимое поста, можно создать специальный шорткод.
function run_php($matches){ eval('ob_start();'.$matches[1].'$inline_execute_output = ob_get_contents();ob_end_clean();'); return $inline_execute_output; } function run_php($content){ $content = preg_replace_callback('/[run]((.|n)*?)[/run]/', 'exec_php', $content); $content = preg_replace('/[run off]((.|n)*?)[/run]/', '$1', $content); return $content; } add_filter('the_content', 'run_php', 0);
Шорткод:
[run]тут исполняемый php-код[/run]
Отображение последней, прикрепленной к записи, миниатюры картинки
Вместо того, чтобы выискивать 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]
Вставка изображений в комментариях
Чтобы позволить комментаторам использовать изображения, не вспоминая HTML-кодов, можно для вставки картинок сделать шорткод.
function ImgShortcode($atts, $content = null) { extract(shortcode_atts(array( ), $atts)); return ''; } add_shortcode("img", "ImgShortcode");
Шорткод:
[img]http://XXX.XX/default.jpg[/img]
Вывод записей из любого RSS фида
В любом месте блога с помощью шорткода можно вывести список последних записей из любого 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="https://n-wp.ru" num="5"]
Текст только для пользователей с определенными правами
Можно делать текстовые вставки, показывая их только пользователям с определенными правами.
function acodeess_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 'Извините, у вас недостаточно прав для чтения этого текста'; } add_shortcode( 'acodeess', 'acodeess_check_shortcode' );
Шорткод:
[acodeess capability="switch_themes"]
В данном примере текст могут прочитать те, кто может менять тему блога.
Пометки администратора
Администратор может делать пометки в записях.
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]Текст[/note]
Шорткод постоянной ссылки
У каждой записи блога есть постоянная, вечная ссылка, которая не изменяется при смене структуры внутренних ссылок. Ее можно вывести с помощью шорткода.
function permalink_thingy($atts) { extract(shortcode_atts(array( 'id' => 1, 'text' => "" // значение по умолчанию, если ничего не указано ), $atts)); if ($text) { $url = get_permalink($id); return "<a href="https://n-wp.ru/url-vlozhennyih-rubriki-bez-roditelya/">$text</a>"; } else { return get_permalink($id); } } add_shortcode('permalink', 'permalink_thingy');
Шорткод:
[permalink id=XXXX]
Отмена автоматического форматирования
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]Этот текст без автоматического форматирования[/raw]
А какие шорткоды используете вы?