Я використовую 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. Теги отн у галереях
Іноді під час використання скрипта лайтбоксу у вашій темі вам може знадобитися додати тег отн для ваших посилань, щоб дозволити JavaScript підхопити їх як лайтбокс. Цей код виглядає складним, але його легко адаптувати просто змінюючи тег отн на те, що потрібно 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. Власний клас для останнього запису в циклі
Функція, яку я постійно використовую. Вам може знадобитися змінити відступи для останнього запису на сторінці, щоб підігнати його під вашу тему. Ця функція додасть класостаннійдо кожного останнього запису в циклі. Просто, але ефективно.
// 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. Нотатки тільки для адміністратора
Це проста функція, але мої клієнти вважають її дуже корисною для випадків коли одним сайтом керує багато користувачів.
Додати шорткод [увагу]Це буде видно тільки адміністраторам[/увагу] у будь-який запис, і це повідомлення буде видно лише авторизованим адміністраторам. Зручно для нотаток про редагування та запитів на зміни.
// 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. Усі бездумно копіюють цей шматок коду.
нічого цікавого
Дякую ! Стаття цікава. Хто б там що казав