В этой статье дорогие друзья, я бы хотел рассказать об использовании шорткодов (shortcode) в WordPress. Это, что-то наподобие плагинов, но использование шорткодов, в отличие от плагинов, значительно снижает нагрузку на Ваш сервер. Также мы рассмотрим самые популярные шорткоды, которые Вы можете использовать у себя на WordPress сайтах. Итак, начнем.
Что такое вообще шорткод?
WordPress, начиная с версии 2.5 начала поддерживать такую функцию как шорткод. Шорткод представляет из себя специализированное кодов слово, которое обычно заключается в квадратные скобки, написав которое в редакторе своего поста, вызывается функция, которая соответствует данному шорткоду. Данная функция естественно, что-то выполняет, например, выводит статистику блога. Соответственно, если Вы напишите шорткод, то в том месте, где Вы его написали, при загрузке данной страницы появится статистика Вашего сайта. Один из стандартных шорткодов – это gallery.Данный шорткод, выводит галерею изображений, которую вы загрузили в конкретный пост.
Как используются шорткоды?
Многие шорткоды необходимо добавлять вручную. Они описываются в файле шаблона functions.php. Но лучше уже добавлять их вручную, чем скачивать и устанавливать плагин, который выполнит туже самую функцию. Давайте рассмотрим самый просто пример шорткода, который выводит текущий год.
Для этих целей, нам необходимо открыть файл functions.php и, например, в конце данного файла написать следующий код:
function show_current_year(){returndate('Y');}
add_shortcode('show_current_year','show_current_year');
А теперь, для того, чтобы нам получить текущий год, необходимо в нужное нам место (где мы хотим видеть текущий год) написать следующий шорткод – [show_current_year]
Если Вы хотите, использовать шорткоды, например в виджетах, то в файле functons.php необходимо добавить следующее:
Для написание не сложно шорткода, достаточно небольшие знания php и всего-то. Дальше рассмотрим топ самых интересных шорткодов, которые Вы можете использовать у себя не сайте, при этом не пользоваться виджетами.
Отображение текста только в RSS.
Если Вы хотите, чтобы у Вас было больше подписчиков, то необходимо часть записи выводить только в RSS ленте. Это можно сделать с помощью плагина FeedOnly, но лучше использовать следующий шорткод:
function member_check_shortcode($atts,$content=null){if( is_user_logged_in()&&!is_null($content)&&!is_feed())return$content;return'';}
add_shortcode('member','member_check_shortcode');
Применение: [member]текст для зарегистрированных пользователей[/member]
Скрытие некоторой заметки к посту.
Тут я немного объясню. Например, Вы ведете блог не один, и хотите, чтобы некоторые записки были видны только пользователям, которые имеют доступ к редактированию данного поста (Например: Вы опубликовали пост и поместили такое текст в шорткод, который я напишу ниже – «Не забудь добавить ссылку»). Для этих целей, необходимо использоватб следующий шорткод:
function sc_note($atts,$content=null){if( current_user_can('publish_posts'))return'<div class="note">'.$content.'</div>';return'';}
add_shortcode('note','sc_note');
Использование следующее: [note]текст заметки[/note]. Также можно прописать стили, чтобы данная заметка визуально отличалась: <div class=»note»>
Кодировка электронного адреса.
Данная шорткод поможет закодировать электронный адрес в специальные html-символы, которые я представляю ниже в виде таблицы:
Символ
Номер
Название
Описание
‘
'
'
апостроф
&
&
&
амперсанд
<
<
<
левая треугольная скобка
>
>
>
правая треугольная скобка
«
«
«
треугольные кавычки (левая)
»
»
»
треугольные кавычки (правая)
Полный список HTML-символов, Вы можете посмотреть на специальном сайте
function munge_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','munge_mail_shortcode');
Использовать его следует следующим образом: [mailto]mail@gmail.com[/mailto]
Вывод статистики Вашего блога.
Многие блоггеры любят выводить различную статистику своего блога, например, в футере или сайдбаре. Статистика может быть любой, например количество комментариев на блоге, постов, зарегистрированных пользователей и многое другое. Чтобы вывести такую статистику многие пользуются различными плагинами, но я Вам расскажу, как это можно сделать с помощью шорткода, который показан ниже.
Использовать данный шорткод можно следующим образом: [wcs_count type=»posts»]. Полный список возможностей можно увидеть на сайте разработчика
Показать скрытый текст после определенной даты.
Данный шорткод удобно использовать, при поздравлении с каким-нибудь праздником или анонса проведения конкурса. Например, Вы заранее написали поздравление, но хотите, чтобы оно отобразилось только лишь в определенную дату, тогда данный шорткод именно для Вас.
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>";}elseif($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=»2013″] С Новым годом! [/cdt]. До наступления данной даты, будет отображаться счетчик обратного отсчета.
Открыть PDF-документ через GoogleDocs.
Данный шорткод поможет открыть пользователю pdf-документ с Вашего сайта, используя GoogleDocs, это делается путем перенаправления.
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://site.ru/linktoyour/file.pdf»] Читать PDF на GoogleDocs [/pdf].
Вставка видео с YouTube на Ваш сайт.
Для того, чтобы использовать данный шорткод, естественно Вам следует знать ID видео на Youtube.
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($piecesas$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]Здесь текст, к которому не будет применено форматирование WordPress [/raw]
Вывод похожих записей.
Конечно данную функцию можно организовать в WordPress с помощью плагина, что в принципе многие и делают, но я хочу сказать Вам, что Вы также можете это сделать и с помощью шорткода, так будет даже лучше, тем более данную функцию Вы можете применить к конкретной статье.
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($tagsas$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($relatedas$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');
Пример использования: [related_posts] пишем и все, в нужном месте естественно.
Также хочу Вам сказать, что если Вы часть используете шорткоды, то Вам лучше в редактор постов WordPress добавить кнопку вызова шорткодов, это делается следующим образом:
Добрый день((
Вставил вот етот код
function member_check_shortcode( $atts, $content = null ) { if ( is_user_logged_in() && !is_null( $content ) && !is_feed() ) return $content; return »; } add_shortcode( ‘member’, ‘member_check_shortcode’ );
Подробнее http://pressdev.ru/ispolzovanie-shortkodov-v-wordpress/
обновил-стал показываться белый екран и всё(((
Что делать?
ps емеил не настоящий…
Вы может вставили данный код с текстом Подробнее?
Вставил вот ето:
function member_check_shortcode( $atts, $content = null ) { if ( is_user_logged_in() && !is_null( $content ) && !is_feed() ) return $content; return »; } add_shortcode( ‘member’, ‘member_check_shortcode’ );
Подробнее http://pressdev.ru/ispolzovanie-shortkodov-v-wordpress/
Появляется ещё ссылка на этот сайт(она выше)
Нууу, так ее надо удалить из кода!!!
Добрый день. А как вывести текст на английском языке, так, чтобы я мог потом локализовать плагин или шаблон? Например такую конструкцию:
php _e(‘Price’, ‘simple_shop’)