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

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

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

    Max7845 Создатель

    Регистр.:
    13 окт 2015
    Сообщения:
    25
    Симпатии:
    0
    C версией 4,4 работает ?
     
  2. denniseds

    denniseds Создатель

    Регистр.:
    23 июл 2009
    Сообщения:
    32
    Симпатии:
    0
    Кто то писал/использовал шоткод для изменения контактной информации в зависимости от гео?
    Нужно реализовать в связке с WooCommerce Currency Switcher, плагин определяет гео, выставляет соответствующую валюту, нужно что бы соответственно отображалась контактная информация для нужной страны в хедере и футере.
     
  3. _Stas_

    _Stas_ Создатель

    Регистр.:
    1 июн 2016
    Сообщения:
    10
    Симпатии:
    0
    Чтоб шоткод в виджете работал.
    PHP:
    add_filter('widget_text''do_shortcode');
    Добавить в functions.php и всё заработает.
     
  4. fuxilazo

    fuxilazo Создатель

    Регистр.:
    3 ноя 2016
    Сообщения:
    21
    Симпатии:
    4
    вывод статистики блога, например, сколько постов и комментариев написано

    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((mktime0,0,0,(int)$month,(int)$day,(int)$year) - time())/86400);
    if( 
    $remain ){
    return 
    $daysremain "<div class=\"event\">Осталось дней до появления - <strong>($remain)</strong></div>";
    }else if(
    $remain == ){
    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]

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

    fuxilazo Создатель

    Регистр.:
    3 ноя 2016
    Сообщения:
    21
    Симпатии:
    4
    Данный шорткод перенаправляет PDF на GoogleDocs, что намного удобнее для пользователя.

    PHP:
    function pdflink($attr$content) {
    return 
    '<a class="pdf" href="http://docs.google.com/viewer?url=' $attr['href'] . '">'.$content.'</a>';
    }
    add_shortcode('pdf''pdflink');
    [pdf href="http://yoursite.com/linktoyour/file.pdf"] Читать PDF [/pdf]
     
  6. fuxilazo

    fuxilazo Создатель

    Регистр.:
    3 ноя 2016
    Сообщения:
    21
    Симпатии:
    4
    выводим похожие посты

    я делаю не так, пишу просто функцию в шаблоне поста, но думаю, что многим будет полезен и этот функционал

    [related_posts]


    PHP:
    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 < NOW()
    GROUP BY tr.object_id
    ORDER BY count DESC, p.post_date_gmt DESC
    LIMIT 
    $limit;";

    $related $wpdb->get_results($q);
    if ( 
    $related ) {
    foreach(
    $related as $r) {
    $retval .= '<li><a title="'.wptexturize($r->post_title).'" href="'.get_permalink($r->ID).'">'.wptexturize($r->post_title).'</a></li>';
    }
    } else {
    $retval .= '
    <li>No related posts found</li>'
    ;
    }
    $retval .= '</ul>';
    return 
    $retval;
    }
    return;
    }
    add_shortcode('related_posts''related_posts_shortcode');
     
    alexwweb нравится это.