Шорткоды – удобнейшая штука. Не нужно запоминать какие-то длинные кодовые конструкции, просто вставил пару слов – и получил результат. Шорткоды можно употреблять везде – в постах, на страницах, и даже внутри шаблона. Привожу примеры нескольких шорткодов, которые могут облегчить вам использование блога, сделают его более удобным и функциональным.
- 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]
А какие шорткоды используете вы?







