Собственно, при разработке шаблонов для WordPress и сайтов на этой CMS собираются своеобразные плюшки, которые потом часто используются. Все коды вставляются в файл functions.php в папке установленной темы.

Итак, что у нас сегодня:

1.Чистим хедер страницы

Удаляем всякую байду из хедера страницы, типа версии вашего вордпресса, дополнительных ссылок на RSS, ссылок для всяких сервисов типа Really Simple Discovery, программ Windows Live Writer и т.п. чепуху, которая нам не нужна и использоваться не будет.

2.Удаляем всплывающие подсказки (тег title=»»)

Удаляем всплывающие подсказки (тег title=»») типа: «Просмотреть все записи в рубрике…» из ссылок на категории и теги. Выглядят они достаточно глупо, особенно если мы делаем не блог, а например корпоративный сайт, портфолио и т.п.

3. Удаляем все HTML теги из комментариев

пусть любители втиснуть ссылку в комментарий отдохнут. Кстати, в интернете широко известен другой способ, но он html-код не удаляет, а тупо делает его в комментариях простым текстом. Меня это не прикалывает, этот вариант — удаляет все теги полностью.

4. Убираем дурацкие символы […]

Убираем дурацкие символы […] в конце кратких анонсов на главной, категориях, архивах, результатах поиска и т.п. (к слову, такие киксы даже у флагманов http://ru.wordpress.org/ — прокрутить страницу вниз.) Собственно, мы их не просто убиваем, а меняем на симпатичную ссылку «читать далее..»

5. Сколько времени занимает генерация страницы

При навешивании кучи плагинов и прочих свистелок & перделок, хорошо бы видеть, сколько времени занимает генерация страницы, а так же сколько при этом было запросов в базу и использовано памяти. Этот код выводит в футере страницы инфу о времени генерации, запросах и потреблении памяти.

6. Удаляем поле «сайт» из формы комментариев.

Еще один гвоздик в гроб любителей тискануть ссылку на свой гс. Да я и сам)) хоть и очень редко где-то что-то комментирую, но увидев поле «ваш сайт», как говорится, трудно пройти)) мимо. Так что убираем, нафиг, это искушение:

7. Удаление отступа из полной статьи

Удаление конструкции

HTML из полной статьи.
<p><span id="more..."></span></p>

В живом виде проявляется в качестве уродливого отступа.
Фиксим:

8.Выпиливаем админ бар у всех пользователей:

PHP:
function disable_admin_bar() {
add_filter( 'show_admin_bar', '__return_false' );
add_action( 'admin_print_scripts-profile.php',
'hide_admin_bar_settings' );
}
add_action( 'init', 'disable_admin_bar' , 9 );

В добавок к выше указанному удалению категории с главной, удаляем любую категорию из фида, где 1 — номер категории:

PHP:
function filter_feed_cat($query) {
if ($query->is_feed) {
$query->set('cat','-1');
}
return $query;
}
add_filter('pre_get_posts','filter_feed_cat');

Вообще, используя Conditional tags можно исключить любую запись или категорию, навешивая фильтр на pre_get_posts, по аналогии с is_feed.

Редирект результатов поиска с /?s=query на /search/query/, конвертация %20% на +
function nice_search_redirect() {
global $wp_rewrite;
if (!isset($wp_rewrite) || !is_object($wp_rewrite) || !$wp_rewrite->using_permalinks()) {
return;
}
$search_base = $wp_rewrite->search_base;
if (is_search() && !is_admin() && strpos($_SERVER[‘REQUEST_URI’], «/{$search_base}/») === false) {
wp_redirect(home_url(«/{$search_base}/» . urlencode(get_query_var(‘s’))));
exit();
}
}
if (current_theme_supports(‘nice-search’)) {
add_action(‘template_redirect’, ‘nice_search_redirect’);
}

9.Редирект на главную если параметр поиска empty

function request_filter($query_vars) {
if (isset($_GET[‘s’]) && empty($_GET[‘s’])) {
$query_vars[‘s’] = ‘ ‘;
}
return $query_vars;
}
add_filter(‘request’, ‘request_filter’);

10.Показать скриншот любого сайта

Вы хотите сделать скриншот какого-либо сайта и показать его у себя на сайте? Этот классный шорткод поможет Вам в этом. Скопируйте этот код в файл 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"]

11.Добавить ссылку для пожертвований 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]

12. Приведение 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] 

13. Создание приватного контента

Всегда хочется, чтобы не копипастили контент с сайта. Можно сделать показ определенного контента только зарегистрированным. Добавляем это в 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:

14. Показ 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] 

15. Показ прикрепленных изображений к посту

Данный шорт может показывать последнее изображение, прикрепленное к посту. Добавим этот шортик в 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"]

 

16.Показ 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 "";
?>

Оригинал