Несколько шорткодов для блога на WordPress

Ручное и автоматическое добавление кнопки Google +1 к каждому посту | n-wp.ru
👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

Шорткоды — удобнейшая штука. Не нужно запоминать какие-то длинные кодовые конструкции, просто вставил пару слов — и получил результат. Шорткоды можно употреблять везде — в постах, на страницах, и даже внутри шаблона. Привожу примеры нескольких шорткодов, которые могут облегчить вам использование блога, сделают его более удобным и функциональным.

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]

А какие шорткоды используете вы?

Создай свой первый сайт на WordPress

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

Оцените автора
Добавить комментарий