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

Смотрите также:

Я хочу поделиться с вами тем, что я считаю своими топовыми WordPress-сниппетами. Эти 10 фрагментов используются практически в каждом проекте, над которым я работаю. Весь этот код добавляется в файл functions.php в папке вашей темы.

Итак, начнем.

1. Сайт временно не доступен

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

// Temp Maintenance - with http response 503 (Service Temporarily Unavailable)
// This will only block users who are NOT an administrator from viewing the website.
function wp_maintenance_mode(){
    if(!current_user_can('edit_themes') || !is_user_logged_in()){
        wp_die('Maintenance, please come back soon.', 'Maintenance - please come back soon.', array('response' => '503'));
    }
}
add_action('get_header', 'wp_maintenance_mode');

Как только вы закончили ваши изменения, просто поставьте два слэша // в коде PHP перед 5-ой строкой кода для того, чтобы отменить функцию wp_die и действие этого кода.

// wp_die('Maintenance, please come back soon.', 'Maintenance - please come back soon.', array('response' => '503'));

2. Размер изображения в выпадающем списке

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

// Set the new image sizes
if(function_exists( 'add_image_size')){
	add_image_size('blog-large', 900, 700, false);
}

// Tell the media panel to add the new size to the dropbown
function custom_image_sizes($sizes) {
        $addsizes = array(
                "blog-large" => __("X-Large")
                );
        $newsizes = array_merge($sizes, $addsizes);
        return $newsizes;
}
add_filter('image_size_names_choose', 'custom_image_sizes');

Чтобы добавить больше размеров, просто добавляйте больше add_image_size и добавьте их в массив $addsizes.

3. Теги rel в галереях

Иногда при использовании скрипта лайтбокса в вашей теме вам может понадобиться добавить тег rel для ваших ссылок, чтобы позволить JavaScript подхватить их в качестве лайтбокса. Этот код выглядит сложным, но его легко адаптировать, просто изменяя тег rel на то, что нужно JavaScript для работы лайтбокса.

// Add rel tag to gallery images (Used for some Lightbox plugins / code)
function addlightboxrel_replace($content){
	global $post;
	$pattern = "/<a(.*?)href=('|\")([^>]*).(bmp|gif|jpeg|jpg|png)('|\")(.*?)>(.*?)<\/a>/i";
	$replacement = '<a$1href=$2$3.$4$5 rel="gallery"$6>$7';
	$content = preg_replace($pattern, $replacement, $content);
	return $content;
}
add_filter('the_content', 'addlightboxrel_replace', 12);
add_filter('get_comment_text', 'addlightboxrel_replace');

4. Сообщение о неудачной авторизации

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

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

// Change the failed login message for extra WordPress Secruty
function failed_login() {
    return 'Incorrect login information.';
}
add_filter('login_errors', 'failed_login');

5. Скрываем информацию о версии WordPress

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

// Remove the WP version for extra WordPress Secruty
function remove_wp_version(){
    return '';
}
add_filter('the_generator', 'remove_wp_version');

6. Собственный класс для последней записи в цикле

Функция, которую я все время использую. Вам может понадобиться изменить отступы для вашей последней записи на странице, чтобы подогнать ее под вашу тему. Эта функция добавит класс "last" к каждой последней записи в цикле. Просто, но эффективно.

// Add a class to the last post in a loop
function last_post_class($classes){
	global $wp_query;
	if(($wp_query->current_post+1) == $wp_query->post_count) $classes[] = 'last';
	return $classes;
}
add_filter('post_class', 'last_post_class');

7. Анти-спам ссылки для отправки e-mail

Всем мы знаем, что ссылки mailto: уязвимы даже для самых простых ботов. Тем не менее, есть кое-что, что мы можем сделать, чтобы попробовать защитить ссылку mailto: от того, что боты получат адрес вашего ящика и заполнят его спамом.

// Anti Spam Mailto Links
function email_encode_function($atts, $content){
return '<a href="'.antispambot($content).'">'.antispambot($content).'</a>';
}
add_shortcode('email', 'email_encode_function');
// Use shortcode [email]email@me.com[/email]

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

[email]email@me.com[/email]

8. Скрываем сообщения об обновлениях ядра WordPress

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

Он просто спрячет желтый блок, который появляется вверху панели администратора, когда выходит новая версия.

// Hide WordPress Update
function wp_hide_update() {
    remove_action('admin_notices', 'update_nag', 3);
}
add_action('admin_menu','wp_hide_update');

9. "Снимок" любого сайта

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

// Output a snapshot of any website!
function wp_snap($atts, $content = NULL) {
        extract(shortcode_atts(array(
			"snap" => 'http://s.wordpress.com/mshots/v1/',
			"url" => 'http://wpdaily.co/',
			"alt" => 'WPDaily',
			"w" => '400', // width
			"h" => '300' // height
        ), $atts));

		$img = '<img alt="' . $alt . '" src="' . $snap . '' . urlencode($url) . '?w=' . $w . '&h=' . $h . '" />';
        return $img;
}
add_shortcode("snap", "wp_snap");
// Use [snap url="http://wpdaily.co/" alt="WPDaily Website" w="400" h="300"]

Чтобы использовать этот шорткод, вставьте в текст вашей записи следующее:

[snap url="http://wpdaily.co/" alt="WPDaily Website" w="400" h="300"]

10. Заметки только для администратора

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

Добавьте шорткод [note]Это будет видно только администраторам[/note] в любую запись, и это сообщение будет видно только авторизованным администраторам. Удобно для заметок о редактировании и запросов на изменения.

// Admin Note
function adminnote($atts, $content = NULL){
	if(current_user_can('edit_themes') || is_user_logged_in()){
		return '</pre>
<div style="margin-bottom: 22px; font-family: Consolas, Monaco, \'Courier New\', Courier, monospace; font-size: 12px; font-weight: inherit; overflow-x: auto; white-space: -o-pre-wrap; width: 99%; word-wrap: break-word; background: #f3f3f7; border: 1px solid #dedee3; padding: 11px; line-height: 1.3em;"><b>Admin Notice</b>
' . $content . '</div>
<pre>
';
	}
}
add_shortcode('note', 'adminnote');
// Use [note]This will appear only to admins[/note]

Ну вот, ТОП-10 моих сниппетов для WordPress вы узнали. Если у вас есть какие-то свои фрагменты кода, поделитесь ими в комментариях.

Источник: WPdaily.co

Вам понравился материал?

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

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Извините, для комментирования необходимо войти.

9 комментариев

сначала новые
по рейтингу сначала новые по хронологии

Спасибо ! Статья интересная. Кто бы там что говорил

Сергей Владимирович

ничего интересного

10 Сниппет "Заметки только для администратора" совершенно бесполезен, так как встроенный поиск WordPress прекрасно видит содержимое и выводит статью с ним. Никому на свете еще не удалось скрыть содержимое не только от незарегистрированных пользователей, но и от встроенного поиска WordPress. Все бездумно копируют этот кусок кода...

Интересная статья, но не для новичков, а старички уже знают. Часто на просторах интернета, как и здесь, встречается: "вставьте код", "ссылку" в код страницы. Вот сидишь и смотришь куда там вставлять, в какое место?! Мда...Хотелось бы по конкретнее.
В комментах, что функция регистрации встроена? Хитро!

Сергей Владимирович

а тут каменты не соединены с сайтом, они живут отдельной жизнью, как и у меня на сайте.

Сергей Владимирович

в комментариях вы зарегались а на самом сайте то нет))

Для вопросов "куда вставлять и в какое место" была специально написана отдельная статья, читайте:http://wpcafe.org/tutorials/kuda-vstavlyat-etot-kod-v-wordpress-obshhaya-struktura-faylov-temyi/

Хорошая статья, но не для новичков, нет конкретики.

Alex Zaramenskikh

Очень интересно! Спасибо!