Хитрости WordPress или как прокачать сайт на 100%

Если вы один из миллионов людей, которые каждый день используют WordPress, то эта статья поможет вам улучшить внешний вид, функциональность и производительность вашего сайтов. Каждая из этих хитростей была не раз опробована на живых проектах и теперь представлена в самом простом и лаконичном виде. Если нужно больше — добро пожаловать в WordPress Codex.

По мере выявления новых трюков, статья будет пополнятся.

Список хитростей:

  1. WordPress шорткоды
  2. Вывод ссылок на посты вне цикла WordPress
  3. Приветствие для вернувшихся комментаторов
  4. Недавно обновленные посты и страницы
  5. Контент для пришедших с поисковых систем

WordPress шорткоды 

Экономьте время, заменив наиболее часто вводимые слова и фразы в WordPress на короткие команды. Например, если вы часто набираете URL вашего блога, вы можете разместить следующий код в файл functions.php вашей темы:

function shortURL() {
     return 'http://haosweb.ru/'; 
} add_shortcode('myurl', 'shortURL');

Теперь, когда я пишу пост через режим «Текст», все что мне нужно, чтобы включить URL моего блога — вставить «[myurl]». Прекрасно работает в WordPress 2.5 или выше.

Шорткоды с атрибутами

Но очень часто просто вставки ссылки недостаточно, хотелось бы указывать текст к которому она привязана, да и другую ссылку тоже не помешало бы указать, не все ж время только на свой сайт ссылаться. Это можно сделать, поместив следующий код в файл functions.php вашей темы:

function shortLink($atts, $content = null) {
    extract(shortcode_atts(array(
        "href" => 'http://' // default URL
    ), $atts));
    return '<a href="'.$href.'">'.$content.'</a>';
}
add_shortcode('link', 'shortLink');

Теперь при создании поста можно писать:
[link href=http://haosweb.ru/]HaosWeb — блог web-программиста[/link]
Что будет преобразовано в:
<a href=http://haosweb.ru/>HaosWeb — блог web-программиста</a>

Вывод ссылок на посты вне цикла WordPress

Как правило функция the_permalink() требует наличия wordpress цикла. Но ее можно вызвать и вне его следующим способом:

<!-- Ссылка на пост c ID = 33 -->
<a href="<?php echo get_permalink(33); ?>">Ссылка на пост с 33 ID</a>
<!-- ссылка через глобальную переменную $post -->
<a href="<?php echo get_permalink($post->ID); ?>">Ссылка на пост</a>

Вывод приветствия для вернувшихся комментаторов

Мы можем поприветствовать наших комментаторов, извлекая информацию о них из cookie. Поместите следующий код в нужное место в вашей теме и настройте разметку для вывода приветствия:

<?php if(isset($_COOKIE['comment_author_'.COOKIEHASH])) {
	$lastCommenter = $_COOKIE['comment_author_'.COOKIEHASH];

	echo "Рады видеть вас снова ". $lastCommenter ."!";

	} else {

	echo "Здравствуй, незнакомец!";
} ?>

Показать недавно обновленные посты и страницы

Предлагаю легкий способ вывода списка последних обновлений постов и страниц без дополнительных плагинов. Просто поместите данный код в необходимом месте шаблона.

<?php 

$today  = current_time('mysql', 1);
$number = 5; // number of posts

if($recentposts = $wpdb->get_results("SELECT ID, post_title FROM $wpdb->posts WHERE post_status = 'publish' AND post_modified_gmt < '$today' ORDER BY post_modified_gmt DESC LIMIT $number")):

?>

<h2><?php _e("Recently Updated"); ?></h2>
<ul>
<?php

foreach($recentposts as $post) {

	if($post->post_title == '') $post->post_title = sprintf(__('Post #%s'), $post->ID);
	echo '<li><a href="'.get_permalink($post->ID).'">'.the_title().'</a></li>';

} ?>
</ul>

<?php endif; ?>

Показываем отдельный контент для пришедших с поисковиков

Чтобы показать какой-то контент для поискового трафика, размещаем следующий код в functions.php

<?php function scratch99_fromasearchengine() {

	$ref = $_SERVER['HTTP_REFERER'];
	$SE  = array('/search?', 'images.google.', 'web.info.com', 'search.', 'del.icio.us/search', 'soso.com', '/search/', '.yahoo.');
	
	foreach($SE as $source) {
		if(strpos($ref, $source) !== false) return true;
	}
	return false;
} ?>

После того как допишите все необходимые поисковики, разместите следующий код в том месте темы, где хотите выводить ваш контент:

<?php if(function_exists('scratch99_fromasearchengine')) {
	if (scratch99_fromasearchengine()) {

		// Ваш код тут

	}
} ?>

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