Информация Практичные WordPress шорткоды

yavasilek

vasilek_gorbunok
Регистрация
5 Окт 2008
Сообщения
1.197
Реакции
446
Шорткоды – пользовательские функции, которые сохраняют время при написании поста в WordPress. Сегодня я хочу представить Вам 10 самых используемых WordPress шорткодов.
Показать скриншот любого сайта
Вы хотите сделать скриншот какого-либо сайта и показать его у себя на сайте? Этот классный шорткод поможет Вам в этом. Скопируйте этот код в файл functions.php:
PHP:
function wpr_snap( $atts, $content = null ) {
    extract(shortcode_atts(array(
        'snap' => 'http://s.wordpress.com/mshots/v1/',
        'url' => 'http://www.nulled.cc/’,
        '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');
На этом всё. Теперь чтобы посмотреть скриншот nulled, добавьте пост со следующим содержанием:
PHP:
[snap url="http://www.nulled.cc/" alt="Нуллед" w="400" h="300"]
Добавить ссылку для пожертвований Paypal
Многие блоггеры размещают подобную ссылку на своем блоге и просят читателей помочь им материально. Если все же PayPal включит для России приём денег, можно добавить этот шортик к себе в functions.php:
PHP:
function cwc_donate_shortcode( $atts ) {
    extract(shortcode_atts(array(
        'text' => 'Есть мелочь?',
        'account' => 'REPLACE ME',
        'for' => 'Null',
    ), $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');
И в нужном месте
PHP:
[donate]
Приведение email-адреса к кликабельному виду
Любой блог на WordPress конечно же связан со спамом. Если Вы показываете на своём сайте email-адреса пользователей или же свою любимую почту, то можете немного усложнить жизнь спамерам в сборе почты. Просто добавить этот код в functions.php:
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');
И можете не беспокоиться о своём мыле в базах африканских миллиардеров, которые завещали Вам все, что у них есть. Просто оберните мыло в теги
PHP:
[mailto]email@yourdomain.ru[/mailto]
Создание приватного контента
Всегда хочется, чтобы не копипастили контент с сайта. Можно сделать показ определенного контента только зарегистрированным. Добавляем это в functions.php:
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' );
И оборачиваем контент в теги
PHP:
[member]Этот текст доступен для просмотра только хабра-сообществу.[/member]
Показ PDF в фрейме
Есть хороший способ, чтобы показать содержание pdf-файла на сайте. На помощь приходит Google docs. Добавляем новую функцию в functions.php:
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 используем данный тег:
PHP:
[embedpdf width="600px" height="500px"]http://infolab.stanford.edu/pub/papers/google.pdf[/embedpdf]
“Feed only” контент
Данный шортик позволяет показывать определённый контент только RSS-подписчикам. И опять же добавляем функцию в functions.php:
PHP:
function cwc_feedonly_shortcode( $atts, $content = null) {
    if (!is_feed())
        return "";
    return $content;
}
add_shortcode('feedonly', 'cwc_feedonly_shortcode');
И оборачиваем контент, хоторый хотим показать подписчикам в теги
PHP:
[feedonly]Дорогие подписчики, да храни Вас бог.[/feedonly]
Ссылка “Retweet”
Многие знают, что твиттер – это генератор трафика для блога. А ретвиты еще больше увеличивают трафик на сайт.
PHP:
function tweetmeme(){
    return '<div class="tweetmeme">
                <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script>
            </div>';
}
add_shortcode('retweet', 'tweetmeme');
И в нужном месте
PHP:
[retweet]
Показ прикрепленных изображений к посту
Данный шорт может показывать последнее изображение, прикрепленное к посту. Добавим этот шортик в functions.php:
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");
И в посте добавим тег
PHP:
[postimage]
Видео с Youtube
Если Вы хотите запостить видео с Youtube на своём блоге, то добавим функцию в functions.php:
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");
И в посте можно использовать тег
PHP:
[youtube value="http://www.youtube.com/watch?v=1aBSPn2P9bg"]
Показ RSS ленты
И на последок, можно показать произольную RSS-ленту в посте с помощью функции
PHP:
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');
и тега
PHP:
[rss feed="http://feeds.feedburner.com/catswhocode" num="5"]
Как вывести все шорткоды блога
В шаблон надо вставить:
PHP:
<?
        global $shortcode_tags;
        echo "<pre>"; print_r($shortcode_tags); echo "";
?>
Оригинал
Предлагаю эту тему не засирать, а добавлять посты-шорткоды
 
Последнее редактирование:

Dron25

Создатель
Регистрация
7 Окт 2011
Сообщения
37
Реакции
16
Добавить кнопку скачать

Добавить кнопку скачать
Вместо того чтоб делать ссылкой простой текст, можно это сделать в виде шордкода. Так намного удобнее и можно подогнать вид кнопки как вам угодно через CSS.
 

yavasilek

vasilek_gorbunok
Регистрация
5 Окт 2008
Сообщения
1.197
Реакции
446
Добавляем в пост рекламу от гугла
PHP:
function get_adsense($atts) {
	return '<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>
'
}
add_shortcode('adsense', 'get_adsense');
теперь в нужном месте мы можем вывести рекламу [adsense]
П.С. Информацию по стандартным шорткодам вы можете посмотреть здесь _en.support.wordpress.com/shortcodes/
 

Sanyich

Создатель
Регистрация
12 Дек 2009
Сообщения
46
Реакции
8
Если не сработал код указаный выше, то можно попробовать еще вот так

Код:
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]
 

Dron25

Создатель
Регистрация
7 Окт 2011
Сообщения
37
Реакции
16
на счет шордкода Видео с Youtube, у меня белый квадрат вместо плеера, помогает только если шордкод вставлять такого вида
HTML:
[youtube value="http://www.youtube.com/v/tg00YEETFzg"]
можно и вставлять так если хотите без похожего видео в конце
HTML:
[youtube value="http://www.youtube.com/v/tg00YEETFzg?rel=0"]
но если давать такой адрес, то плеер ютуба немного постарее версии.

ссылки на новый плеер выглядят так
HTML:
http://www.youtube.com/embed/tg00YEETFzg
но так не работает, может есть еще вариант?
 

yavasilek

vasilek_gorbunok
Регистрация
5 Окт 2008
Сообщения
1.197
Реакции
446
Шорткод вывода любого поста на любой странице
PHP:
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");
Пример использования шорткода:
PHP:
[pst_inc id="XX"]
XX - это ID поста. Довольно простой шорткод: просто указываете ID поста, и его содержимое выводится в нужном месте страницы. Если вы ничего не укажете или укажете несуществующий ID, то шорткод просто ничего не выведет. Шорткод удобен тем, что с его помощью можно обойтись без создания специального шаблона для такой страницы.
 

yavasilek

vasilek_gorbunok
Регистрация
5 Окт 2008
Сообщения
1.197
Реакции
446
Вывод записей из определенной категории
PHP:
function category_shortcode( $atts )
{
extract(shortcode_atts(array(
        'limit' => '5',
            'category' => '',
    ), $atts));
    //The Query
    query_posts('category=' . $id . 'posts_per_page=' . $limit);
    //The Loop
    if ( have_posts() ) : while ( have_posts() ) : the_post();
        echo    '<h3><a href="'; echo the_permalink(); echo '">'; echo the_title(); echo '</a></h3>';
        echo the_excerpt();
    endwhile; else:
    endif;
 
    //Reset Query
    wp_reset_query();
}
add_shortcode('category', 'category_shortcode');
Пример использования
HTML:
[liste num="4" cat="2"]
Данный пример выведет 4ре записи из 2й категории
 

GoodFEY

Писатель
Регистрация
30 Май 2013
Сообщения
1
Реакции
1
301 редирект на главную страницу

Код:
<?php header("HTTP/1.1 301 Moved Permanently");
header("Location: ".get_bloginfo('url'));
exit(); ?>

Данный код нужно поместить в файл 404.php в самый верх, при каждом обращении к несуществующей странице, пользователь будет перенаправлен на главную.
 

_Stas_

Создатель
Регистрация
1 Июн 2016
Сообщения
22
Реакции
3
Чтоб шоткод в виджете работал.
PHP:
add_filter('widget_text', 'do_shortcode');
Добавить в functions.php и всё заработает.
 

fuxilazo

Создатель
Регистрация
2 Ноя 2016
Сообщения
29
Реакции
6
вывод статистики блога, например, сколько постов и комментариев написано

PHP:
add_shortcode('wcs_count', 'wcs_count_shortcode_handler');

function wcs_count_shortcode_handler($atts)
{
// extract parameters
$parms = shortcode_atts(array(
'type' => 'posts',
'format' => 'true',
'extra' => '1',
), $atts);

$type = strtolower($parms['type']);
$format = strtolower($parms['format']);
$extra = $parms['extra'];

// process t/f options
$b_format = false;
if (($format == 'yes') || ($format == 'y') ||
($format == 'true') || ($format == '1'))
{$b_format = true;}

// exit
return wcs_get_count($type, $b_format, $extra);
}

использование [wcs_count type="posts"]

показываем скрытый текст после определенной даты

Можно использовать при проведении конкурсов, или поздравлении с праздниками, например.

PHP:
function content_countdown($atts, $content = null){
extract(shortcode_atts(array(
  'month' => '',
  'day'  => '',
  'year' => ''
), $atts));
$remain = ceil((mktime( 0,0,0,(int)$month,(int)$day,(int)$year) - time())/86400);
if( $remain > 1 ){
return $daysremain = "<div class=\"event\">Осталось дней до появления - <strong>($remain)</strong></div>";
}else if($remain == 1 ){
return $daysremain = "<div class=\"event\">Остался всего <strong>($remain)</strong> день до появления</div>";
}else{
return $content;
}
}
add_shortcode('cdt', 'content_countdown');

[cdt month="01" day="01" year="2012"] Новый год! [/cdt]

до наступления указанной даты, будет показан счетчик обратного отсчета.
 
Сверху