Хаки и хитрости для WordPress. Коллекция полезных функций для function.php от Starr&Coyier. Часть №10, заключительная

Это последняя часть большого цикла статей о хаках и хитростях для 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 и получать удовольствие, читая мои статьи в своем ридере.

  1. Константин

    Значит, подборка хаков и хитростей для WP закончилась ? Много чего интересного для себя почерпнул из этих записей, что — то использовал, что — то оставил на будущее.

    Буду ждать следующих статей, думаю, о ВордПресс у вас найдется еще много нужного и познавательного материала.

    1. eavasi

      Именно этот цикл закончился. Материалов хватит еще на триста пятьсот семнадцать таких же...

        1. eavasi

          Чего и всем желаю. Спасибо за то, что так активно комментируешь мои посты. Если бы ты знал, как это приятно!!!

  2. Константин

    Значит, подборка хаков и хитростей для WP закончилась ? Много чего интересного для себя почерпнул из этих записей, что — то использовал, что — то оставил на будущее.

    Буду ждать следующих статей, думаю, о ВордПресс у вас найдется еще много нужного и познавательного материала.

    1. eavasi Автор записи

      Именно этот цикл закончился. Материалов хватит еще на триста пятьсот семнадцать таких же...

        1. eavasi Автор записи

          Чего и всем желаю. Спасибо за то, что так активно комментируешь мои посты. Если бы ты знал, как это приятно!!!

  3. Alex

    Как реализовать подстановку разных аватар пользователям автоматически(рандомом из папки выбирать картинки, а не одна картинка для всех)? Я имею ввиду тех у кого нет своих gravatar'ов!

      1. Alex

        Как я понимаю там нужен просто генератор случайных чисел... При новом коментарии генерировать число в некотором диапазоне и вставлять картинку под этим номером... Или таким образом не удастся реализовать эту затею?! Я думаю такой не сильно хитрый код будет полезен не только мне, но и другие пользователи ВП оценят!

          1. Alex

            Случайно не бот на автоответчике?

            А то ничего конструктивного я не услышал, кроме односложных предложений с неопределенным ответом... Автор вам по силам реализовать данный функционал или вы пасуете?

            1. eavasi

              Нет, нет, не бот.

              Вы не правильно поняли. Извините, пожалуйста.

              Обратите внимание, статья переводная, на оригинал есть ссылка в первом абзаце поста.

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

              Спасибо за ваши комменты, и извините еще раз, что ввел вас в заблуждение.

              1. Alex

                Простите и меня за невнимательность, не обратил внимания, что это перевод...

  4. Alex

    Как реализовать подстановку разных аватар пользователям автоматически(рандомом из папки выбирать картинки, а не одна картинка для всех)? Я имею ввиду тех у кого нет своих gravatar'ов!

      1. Alex

        Как я понимаю там нужен просто генератор случайных чисел... При новом коментарии генерировать число в некотором диапазоне и вставлять картинку под этим номером... Или таким образом не удастся реализовать эту затею?! Я думаю такой не сильно хитрый код будет полезен не только мне, но и другие пользователи ВП оценят!

          1. Alex

            Случайно не бот на автоответчике?

            А то ничего конструктивного я не услышал, кроме односложных предложений с неопределенным ответом... Автор вам по силам реализовать данный функционал или вы пасуете?

            1. eavasi Автор записи

              Нет, нет, не бот.

              Вы не правильно поняли. Извините, пожалуйста.

              Обратите внимание, статья переводная, на оригинал есть ссылка в первом абзаце поста.

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

              Спасибо за ваши комменты, и извините еще раз, что ввел вас в заблуждение.

              1. Alex

                Простите и меня за невнимательность, не обратил внимания, что это перевод...

  5. Izvekova Irina

    Евгений, спасибо за пост. Для подстановки случайного аватара на моем блоге я сделала все, как указано в тексте, но картинки не отображаются. Есть ли что-то что нужно еще настроить на блоге или особое место в файле functions для вставки кода есть?

  6. eavasi

    Проверьте, чтобы вновь добавляемая функция не была вставлена в рамки какой нибудь другой. Убедитесь также, чтобы и за рамки тегов <? ?> ничего не вылезало.Сохраните файл в utf (without BOM), укажите правильный абсолютный путь к изображениям, и тогда все должно заработать.
    Удачи.

Добавить комментарий

Ваш e-mail не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.