Я использую WordPress последние несколько лет и за это время я создал достаточно большой банк небольших фрагментов кода и разных трюков, которые помогают мне построить сайт на WordPress. Так что я решил поделиться с вами некоторыми самыми полезными моими фрагментами кода для использования в ваших проектах или в качестве основы для других компонентов.
Смотрите также:
- Куда вставлять этот код в WordPress? Общая структура файлов темы
- 10 полезных хаков и сниппетов для WordPress
- 9 трюков для WordPress, которые вам обязательно пригодятся
- 29 WordPress-трюков для работы с Записями и Страницами
- Как правильно интегрировать сниппеты Google в тему 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 вы узнали. Если у вас есть какие-то свои фрагменты кода, поделитесь ими в комментариях.
Комментарии к записи: 9
Очень интересно! Спасибо!
Интересная статья, но не для новичков, а старички уже знают. Часто на просторах интернета, как и здесь, встречается: «вставьте код», «ссылку» в код страницы. Вот сидишь и смотришь куда там вставлять, в какое место?! Мда…Хотелось бы по конкретнее.
В комментах, что функция регистрации встроена? Хитро!
Для вопросов «куда вставлять и в какое место» была специально написана отдельная статья, читайте:https://hostenko.com/wpcafe/tutorials/kuda-vstavlyat-etot-kod-v-wordpress-obshhaya-struktura-faylov-temyi/
Хорошая статья, но не для новичков, нет конкретики.
а тут каменты не соединены с сайтом, они живут отдельной жизнью, как и у меня на сайте.
в комментариях вы зарегались а на самом сайте то нет))
10 Сниппет «Заметки только для администратора» совершенно бесполезен, так как встроенный поиск WordPress прекрасно видит содержимое и выводит статью с ним. Никому на свете еще не удалось скрыть содержимое не только от незарегистрированных пользователей, но и от встроенного поиска WordPress. Все бездумно копируют этот кусок кода…
ничего интересного
Спасибо ! Статья интересная. Кто бы там что говорил