[Инфо] Практичные WordPress шорткоды

Тема в разделе "Wordpress", создана пользователем yavasilek, 10 окт 2011.

Модераторы: Sorcus
  1. yavasilek

    yavasilek vasilek_gorbunok

    Регистр.:
    5 окт 2008
    Сообщения:
    1.177
    Симпатии:
    423
    Шорткоды – пользовательские функции, которые сохраняют время при написании поста в WordPress. Сегодня я хочу представить Вам 10 самых используемых WordPress шорткодов.
    Показать скриншот любого сайта
    Вы хотите сделать скриншот какого-либо сайта и показать его у себя на сайте? Этот классный шорткод поможет Вам в этом. Скопируйте этот код в файл functions.php:
    PHP:
    function wpr_snap$atts$content null ) {
        
    extract(shortcode_atts(array(
            
    'snap' => 'http://s.wordpress.com/mshots/v1/',
            
    'url' => 'https://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="https://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$sizefalse);
            
    $imagedata wp_get_attachment_image_src($imageID$sizefalse);
            
    $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 "";
    ?>
    Оригинал http://www.catswhocode.com/blog/10-super-useful-wordpress-shortcodes
    Предлагаю эту тему не засирать, а добавлять посты-шорткоды
     
    Последнее редактирование: 15 дек 2014
    Pavel_ps, zetabit, rOOt-uSEr и 14 другим нравится это.
  2. Dron25

    Dron25 Создатель

    Регистр.:
    8 окт 2011
    Сообщения:
    34
    Симпатии:
    10
    Добавить кнопку скачать

    Добавить кнопку скачать
    Вместо того чтоб делать ссылкой простой текст, можно это сделать в виде шордкода. Так намного удобнее и можно подогнать вид кнопки как вам угодно через CSS.
    PHP:
    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");
    Чтобы разместить ссылку в пост, надо вставить шордкор в нужное место поста.
    PHP:
    [dl url="ЗДЕСЬ ВСТАВЛЯЕМ ССЫЛКУ" title="ЗДЕСЬ ПИШЕМ НАЗВАНИЕ"]
    Для оформления кнопки вставляем код в style.css
    PHP:
    .dl {
        
    backgroundurl(/images/dl.pngno-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-left24px
    Иногда бывает что надо вставлять две ссылки (например на Зеркало файла),тогда вставляем такой код.
    PHP:
    function mydl($atts) {
        
    extract(shortcode_atts(array(
            
    "url"     => '',
            
    "title"   => '',  
            
    "url2"     => '',
            
    "title2"   => '',  
        ), 
    $atts));
        return 
    '<div class="dl"><a title="Скачать '.$title.'" href="'.$url.'"  rel="nofollow" target="_blank">Скачать '.$title.'</a> <a title="Скачать '.$title2.'" href="'.$url2.'"  rel="nofollow" target="_blank">Скачать '.$title2.'</a></div>';
    }
    add_shortcode("dl""mydl");
    Для вставки используем следующий шордкод.
    PHP:
    [dl url="ЗДЕСЬ ВСТАВЛЯЕМ ССЫЛКУ" title="ЗДЕСЬ ПИШЕМ НАЗВАНИЕ" url2="ЗДЕСЬ ВСТАВЛЯЕМ ССЫЛКУ 2" title2="ЗДЕСЬ ПИШЕМ НАЗВАНИЕ 2"]
    В втором примере на две ссылки используется тег nofollow, если не хотите чтобы поисковые не учитывали ссылку при индексации, то ставим этот тег и в первый пример.
     
    zenith, crashvlad, leemour и 2 другим нравится это.
  3. yavasilek

    yavasilek vasilek_gorbunok

    Регистр.:
    5 окт 2008
    Сообщения:
    1.177
    Симпатии:
    423
    Добавляем в пост рекламу от гугла
    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/
     
    Shurgen, E-body, crashvlad и ещё 1-му нравится это.
  4. Sanyich

    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]
     
    E-body и crashvlad нравится это.
  5. Dron25

    Dron25 Создатель

    Регистр.:
    8 окт 2011
    Сообщения:
    34
    Симпатии:
    10
    на счет шордкода Видео с 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
    но так не работает, может есть еще вариант?
     
    crashvlad нравится это.
  6. yavasilek

    yavasilek vasilek_gorbunok

    Регистр.:
    5 окт 2008
    Сообщения:
    1.177
    Симпатии:
    423
    Шорткод вывода любого поста на любой странице
    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, то шорткод просто ничего не выведет. Шорткод удобен тем, что с его помощью можно обойтись без создания специального шаблона для такой страницы.
     
    crashvlad и 3xmaster нравится это.
  7. yavasilek

    yavasilek vasilek_gorbunok

    Регистр.:
    5 окт 2008
    Сообщения:
    1.177
    Симпатии:
    423
    Вывод записей из определенной категории
    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й категории
     
  8. GoodFEY

    GoodFEY Писатель

    Регистр.:
    30 май 2013
    Сообщения:
    1
    Симпатии:
    1
    301 редирект на главную страницу

    Код:
    <?php header("HTTP/1.1 301 Moved Permanently");
    header("Location: ".get_bloginfo('url'));
    exit(); ?>
    Данный код нужно поместить в файл 404.php в самый верх, при каждом обращении к несуществующей странице, пользователь будет перенаправлен на главную.
     
    ivanov-ig нравится это.
  9. mrakobes0001

    mrakobes0001 Создатель

    Регистр.:
    6 фев 2013
    Сообщения:
    33
    Симпатии:
    17
    Уточните этот функционал работает в WP4.0.1 или нет?
    у меня выводится кусок html- кода вставлял вот так:
    [embedpdf width="600px" height="500px"]_https://drive.google.com/file/d/0B8Tjc4p_DT78YmZKNzZWV0NWX0E/view?usp=sharing[/embedpdf]
    на выходе
    "
    src=”_http://docs.google.com/viewer?url=_...ZKNzZWV0NWX0E/view?usp=sharing&embedded=true”
    style=”width:600px; height:500px;”
    frameborder=”0″>Ваш браузер не поддерживает фреймы
    "
     
  10. yavasilek

    yavasilek vasilek_gorbunok

    Регистр.:
    5 окт 2008
    Сообщения:
    1.177
    Симпатии:
    423
    Сейчас проверил - работает. Вот скрин
    123.jpg
    Во первых Вы не убрали лишние нижние подчеркивания(раньше ссылки форум запрещал и поэтому в код были добавлены нижние подчеркивания). Сейчас я в оригинале их затер и Вам просто необходимо обновить код у себя на сайте.
    Во вторых проблема может быть в Вашем шаблоне - попробуйте на стандартом.