Полезные WordPress советы и хитрости.

Я уже очень давно пользуюсь WordPress, но даже, несмотря на регулярную работу с исходным кодом, я до сих пор открываю для себя новые советы и хитрости. Я составил свой собственный список из 21 функциональной возможности, которые удобны, оригинальны, забавны и которые не так уж часто используются на практике. Я надеюсь, что каждый найдет в этом списке что-то новое и интересное!

21 tips

1.WordPress имеет массу встроенных скриптов.

Используя wp_enqueue_script() и wp_enqueue_style() вы с легкостью можете объявлять различные стили и скрипты с возможностью управления зависимостями. А знаете ли вы, что WordPress имеет множество уже встроенных скриптов? jQuery, многие элементы jQuery UI, jQuery Form, SWF Object, Tiny MCE, Jcrop и Thickbox и это лишь некоторые из наиболее известных. Весь список вы можете найти в WordPress Codex. Если вы хотите узнать, как эффективно использовать поставленные в очередь функции, то я рекомендую вам ознакомиться с «Руководством разработчика по созданию бесконфликтного JavaScript и CSS в WordPress» прямо здесь, на Smashing Magazine!

2.Замена встроенных скриптов.

Те из вас, кто не боится экспериментировать и ищет что-то новое, могут использовать не только встроенные версии скриптов. Использование новой версии jQuery является довольно распространенной (хотя и не всегда хорошей) практикой. Вы можете подключить ее следующим способом.

function my_scripts_method() {
	wp_deregister_script( 'jquery' );
	wp_register_script( 'jquery', get_template_directory_uri() . '/js/jquery-new.js');
	wp_enqueue_script( 'jquery' );
}
add_action('wp_enqueue_scripts', 'my_scripts_method');

Но не делайте этого только лишь для того, чтобы похвастаться использованием новейших подходов. WordPress включает в себя версию jQuery, которая должна обеспечить максимальную совместимость.

Используйте другую версию jQuery только при возникновении проблем с совместимостью, например, при наличии плагина с конкретными требованиями.

3.Влияние JPG изображений.

Это классический пример того, почему лучше работать в команде. Мой хороший друг Ларс сказал мне, что WordPress не использует на веб-сайте изображения со 100% качеством, в целях экономии места и пропускной способности. Он также показал мне возможное решение этой проблемы:

add_filter( 'jpeg_quality', 'smashing_jpeg_quality' );
function smashing_jpeg_quality() {
	return 100;
}

WordPress по умолчанию использует качество 90%. Для большинства случаев это нормально и я очень сомневаюсь, что люди смогут увидеть разницу. Но если для вашего веб-сайта наличие высококачественного изображения является обязательным требованием (для портфолио, фотографий и т.д.), то подход с изменением значения может быть лучшим решением.

4.FeedBurner переадресация.

FeedBurner использовался почти в каждом блоге, с которым мне доводилось сталкиваться. Но даже, несмотря на это, я до сих пор не могу выполнить все настройки по памяти. Нужно поблагодарить Элио за создание «10 советов по оптимизации вашей WordPress темы», которая содержит следующий фрагмент:

add_action( 'template_redirect' , 'smashing_rss_redirect');
function smashing_rss_redirect() {
	if ( is_feed() AND !preg_match( '/feedburner|feedvalidator/i', $_SERVER['HTTP_USER_AGENT'] ) ){
		header( 'Location: http://feeds.feedburner.com/my_smashing_feed' );
		header( 'HTTP/1.1 302 Temporary Redirect' );
	}
}

5.Использование общих таксономических функций.

Систематизировать объекты можно с помощью ряда таксономических (иерархическая классификация объектов или основополагающих принципов классификации) функций, а также с помощью встроенных тегов и категорий. Справка по функциям от Codex содержит полный список таксономических функций. Мне особенно нравится использовании get_term(), get_terms() и wp_get_object_terms(). Чтобы создать модульную структуру, я стараюсь использовать максимальное количество этих функций, даже для тегов и категорий.

6.Настройка сессий в WordPress.

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

add_action( 'init', 'smashing_session_start' );
function smashing_session_start() {
	if ( !session_id() ) {
		session_start();
	}
}

Обратите внимание, что сессии, как правило, используются для решения задач, связанных с вопросами безопасности, например, выполнение проверки IP или добавление временной защиты. Все складывается хорошо ровно до тех пор, пока вы не столкнетесь с необходимостью передачи особо важных данных. Для получения более подробной информации советую вам познакомиться со статьей Марка Джекиза (Mark Jaquith).

7.Список подключенных функций.

Я столкнулся с необходимостью получить список всех подключенных функций. Когда я воспользовался быстрым поиском Google, оказалось, что WP команды уже содержат именно то, что мне было нужно.

function list_hooked_functions($tag=false){
	global $wp_filter;
	if ($tag) {
		$hook[$tag]=$wp_filter[$tag];
		if (!is_array($hook[$tag])) {
			trigger_error("Nothing found for '$tag' hook", E_USER_WARNING);
			return;
		}
	}
	else {
		$hook=$wp_filter;
		ksort($hook);
	}

	echo '<pre>';

	foreach($hook as $tag => $priority){
		echo "<br />&gt;&gt;&gt;&gt;&gt;\t<strong>$tag</strong><br />";
		ksort($priority);
		foreach($priority as $priority => $function){
			echo $priority;
			foreach($function as $name => $properties) {
				echo "\t$name<br />";
			}
		}
	}
	echo '</pre>';
	return;
}

Даже без использования аргументов, вы получите подробный список всех подключенных функций. Генерация этого списка будет выполняться достаточно долго, поэтому вы можете задать ограничения, чтобы сузить область поиска. Это особенно полезно при отладке или расстановке приоритетов. Знать порядок подключения аргументов в wp_head() очень важно, а эта функция дает вам огромные преимущества!

8.Автоматическое добавление тегов для абзацев.

WordPress автоматически выполняет это действие для контента и цитат. Однако нам абсолютно ничего не мешает использовать эту возможность в другом месте. Функция wpautop() отвечает за переносы строк в параграфах.

$my_text = 'Welcome!
Smashing Magazine is a great place to learn new things.
I hope you’re having a nice time!';

echo wpautop( $my_text );

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

remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );

9.Рассылка электронных писем с помощью WordPress.

Не так уж давно я написал подробную статью о «Создании идеального механизма рассылки электронной почты для вашего WordPress веб-сайта», один из разделов которой связан с использованием функций wp_mail(). Эти функции позволяют использовать встроенные возможности WordPress по рассылке писем пользователям.

$message = 'Hello, thanks for reading my post! I hope to see you back soon.';
wp_mail( 'someonesemail@example.com', 'Thanks for reading my post!', $message);

С помощью фильтра вы также можете отправить HTML контент:

add_filter ("wp_mail_content_type", "smashing_mail_content_type");
function smashing_mail_content_type() {
	return "text/html";
}

10.Встроенная возможность разбиения на страницы.

Я обнаружил эту возможность примерно полгода назад, и она стала для меня настоящим сюрпризом. Вам не нужны специальные плагины, которые позволяют осуществить правильную разбивку на страницы (то есть не просто ссылки «Предыдущая» и «Следующая»); вы можете сделать это с помощью встроенной функции. Функция paginate_links() – это невероятно удобная вещь, которая позволяет показать нумерацию страниц для любого типа контента, а не только WordPress цикла.

// Pagination for a WordPress loop
$list = new WP_Query( $query_args );
$pagination = array(
'base' => str_replace( 99999, '%#%', get_pagenum_link( 99999 ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var( 'paged' ) ),
'total' => $list->max_num_pages,
'next_text' => 'next',
'prev_text' => 'previous'
);
echo '<div class="pagination primary-links">' . paginate_links( $pagination ) . '</div>';

// Pagination for anything
$list = range(1, 100);
$items_per_page = 12;
$pagination = array(
'base' => get_bloginfo( 'url' ) . '/mypage/%_%', ...

Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров

Comments are closed.