Это последняя часть большого цикла статей о хаках и хитростях для WordPress, которые я публиковал последние полторы недели, пришедшиеся на середину апреля 2010 года. Последний набор хаков для WordPress от Starr&Coyier будет посвящен следующему:

— Замена стандартного аватара WordPress на собственный

— Отключение автоматического форматирования контента через короткий код

— Отключение html вставок в комментариях

Замена стандартного аватара на собственный

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

// замена стандартных аватаров
function custom_gravatars($avatar_defaults) {

	// change the default gravatar
	$customGravatar1 = get_bloginfo('template_directory').'/images/gravatar-01.png';
	$avatar_defaults[$customGravatar1] = 'Default';

	// add a custom user gravatar
	$customGravatar2 = get_bloginfo('template_directory').'/images/gravatar-02.png';
	$avatar_defaults[$customGravatar2] = 'Custom Gravatar';

	// add another custom gravatar
	$customGravatar3 = get_bloginfo('template_directory').'/images/gravatar-03.png';
	$avatar_defaults[$customGravatar3] = 'Custom gravatar';
	return $avatar_defaults;
}
add_filter('avatar_defaults', 'custom_gravatars');

Затем просто положите собственные картинки в папку images вашей темы и назовите их соответственно gravatar-01.png, gravatar-02.png, gravatar-01.png. Теперь зайдите в админку вашего блога Настройки / Обсуждение и полюбуйтесь на свои картинки, которые предлагаются для выбора в качестве аватара.

Отключение автоматического форматирования

Если вам не хочется, чтобы какой-то кусок текста или контента форматировался WordPress автоматически, то воспользуйтесь этим хаком для WordPress. Добавьте эту функцию к файлу function.php:

// disable auto formatting in posts
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 ($pieces as $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][/raw]

Отключение html кодов в комментариях

Если ваш блог очень много комментируется или вы рассчитываете на то, что на нем в ближайшее время будет очень много комментариев, которые будут выстроены в длинные цепочки споров и дебатов между вашими читателями, которые будут то и дело вставлять в свои куски кодов, то хак для удаления html тегов будет просто незаменим для вашего блога. Вашим комментаторам будет достаточно ограничить отрезки кода в в <code></code> и все будет отображаться как надо

// escape html entities in comments
function encode_code_in_comment($source) {
	$encoded = preg_replace_callback('/<code>(.*?)<\/code>/ims',
	create_function('$matches', '$matches[1] = preg_replace(array("/^[\r|\n]+/i", "/[\r|\n]+$/i"), "", $matches[1]);
	return "<code>" . htmlentities($matches[1]) . "</"."code>";'), $source);
	if ($encoded)
		return $encoded;
	else
		return $source;
}
add_filter('pre_comment_content', 'encode_code_in_comment');

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

Это последнее, о чем я хотел рассказать вам в этом цикле из десяти статей о хаках для WordPress. Впереди еще очень много интересного и полезного, поэтому настоятельно прошу вас подписаться на обновления моего блога через rss и получать удовольствие, читая мои статьи в своем ридере.

Закладки:, , ,

Связанные записи: