10 найпоширеніших помилок, які роблять розробники на WordPress


Дізнайтесь більше про нові кар'єрні можливості в EchoUA. Цікаві проекти, ринкова оплата, гарний колектив. Надсилайте резюме та приєднуйтеся до нас.

Розробники на WordPress в гонитві за швидкими результатами часто здійснюють одні і ті ж помилки. Перед вами 10 порад, які допоможуть з ними боротися.

1. Включайте режим відладки (debug)

Навіщо використати відладку, якщо код працює нормально? Відладка (дебаг) – це вбудована функція в WordPress, яка допоможе відобразити усі помилки PHP, попередження і повідомлення (включаючи застарілі функції). З відключеною відладкою важко реєструвати нештатні ситуації, що виникають на сайті, що зрештою може принести масу проблем. Крім того, помилки можуть привести до істотного зниження швидкості відкриття сторінок. Кожного разу, додаючи новий скрипт або призначений для користувача код в WordPress, включайте відладку (але не забувайте відключати її при введенні нової функціональності в експлуатацію).

Щоб активувати режим відладки, треба відредагувати файл wp-config.php у кореневому каталозі установки WordPress:

// Активувати відладку
define ('WP_DEBUG', true);
// Реєструвати усі помилки в текстовому файлі /wp-content/debug.log
define ('WP_DEBUG_LOG', true);
// Не виводити повідомлення про помилки
define ('WP_DEBUG_DISPLAY', false);
// Переконатися, що усі помилки PHP також записуються і не виводяться на екран
@ini_set ('display_errors', 0);

Це не вичерпний список параметрів конфігурації, які можна використати, але це налаштування повинно вистачити для вирішення більшості проблем на вашому ресурсі.

2. Не додайте усі скрипти у верхню частину сайту

Хоча в WordPress є безліч популярних скриптів, багато розробників додають додаткові скрипти в wp_head. Це може привести до сильного зниження швидкості завантаження сторінок.

Розв’язати цю проблему допоможе черговість – зручний спосіб додавання скриптів і стилів для WordPress. Черговість використовується для запобіганню можливих конфліктів плагінів і обробки залежностей, які можуть виникати при використанні різних скриптів. У WordPress є вбудовані функції wp_enqueue_script і wp_enqueue_style, які відповідають за виконання скриптів і стилів відповідно. Основна відмінність між цими двома функціями полягає в тому, що з wp_enqueue_script у нас є додатковий параметр, який дозволяє перемістити скрипт в підвал:

wp_register_script ( $handle, $src, $deps = array (), $ver = false, $in_footer = false ) 
wp_enqueue_script ( $handle, $src = false, $deps = array (), $ver = false, $in_footer = false ) 
wp_register_style ( $handle, $src, $deps = array (), $ver = false, $media = 'all' ) 
wp_enqueue_style ( $handle, $src = false, $deps = array (), $ver = false, $media = 'all' )

Якщо скрипт не потрібний для рендеринга контенту, ми можемо сміливо переміщати його в нижню частину сайту. Таким чином сторінка швидко завантажуватиметься, а скрипт виконається вже після повного завантаження контенту.

Для того, щоб перевірити, наскільки успішно ви провели цю або будь-яку іншу оптимізацію, скористайтеся одним з веб-чекерів – інструментів для сканування і аналізу сайтів.

3. Створюйте дочірні теми і не міняйте файли WP

Завжди створюйте дочірню тему, якщо плануєте вносити зміни в шаблон. У батьківських елементах поверх внесених змін може бути перезаписано що завгодно, і після оновлення ви побачите, що ваші старання пропали назавжди. Щоб створити дочірню тему, помістіть файл style.css у підкаталог папки дочірньої теми і наповніть так:

/*

 Theme Name:   Twenty Sixteen Child

 Theme URI:    http://example.com/twenty-fifteen-child/

 Description:  Twenty Fifteen Child Theme

 Author:       John Doe

 Author URI:   http://example.com

 Template:     twentysixteen

 Version:      1.0.0

 License:      GNU General Public License v2 or later

 License URI:  http://www.gnu.org/licenses/gpl-2.0.html

 Tags:         light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready

 Text Domain:  twenty-sixteen-child

*/

У наведеному вище прикладі створюється дочірня тема, що базується на темі “WordPress Twenty Sixteen”. Важливим рядком цього коду є слово Template, яке повинне відповідати імені каталогу батьківської теми, з якої ви клонуєте шаблон.

Такі ж принципи застосовуйте до основних файлів WordPress: не треба змінювати файли “движка”, постарайтеся використати функції і фільтри CMS так, щоб ваші зміни не були перезаписані після оновлення. Функції, що підключаються, дозволяють вам перевизначити деякі базові функції, але цей підхід використовується все рідше і замінюється фільтрами. З фільтрами досягається той же результат, що і з функціями, що підключаються: зміна виведення функцій WordPress. Не забувайте додавати в код if ( !function_exists() ) при використанні функцій, що підключаються, оскільки декілька плагінів, що намагаються перевизначити одну і ту ж функцію, що підключається, без цієї оболонки, призводитимуть до фатальної помилки.

4. Не використайте хардкодинг

Дуже часто нам здається, що простіше вставити значення в код безпосередньо (наприклад, посилання), але у результаті час, витрачений на відладку і усунення проблем, які виникають в результаті таких дій, сильно зростає. Краще всього використати функцію для генерації потрібного нам результату динамічно, що принесе менше проблем в майбутньому.

Приклад: ви переносите сайт з тестового середовища на хостинг з прописаними вручну значеннями для усіх посилань (хардкодинг), у результаті вам доведеться витратити більше часу на те, щоб змусити його працювати. Тому краще використати функції, аналогічні представленим нижче, для отримання шляхів до файлів і генерації посилань :

// Отримати посилання на директорію дочірньої теми:
get_stylesheet_directory_uri ();
// Отримати посилання на директорію батьківської теми:
get_template_directory_uri ();
// Отримати посилання на актуальну версію сайту: 
site_url ();

Іншим поганим прикладом хардкодинга є запис призначених для користувача запитів. Наприклад, в якості заходу безпеки ми міняємо встановлений за умовчанням префікс WordPress з wp _ на щось унікальніше, наприклад, wp743 _. Наші запити не спрацюють, якщо ми коли-небудь перемістимо наш сайт на WordPress, оскільки префікси таблиць можуть мінятися між середовищами. Щоб цього не сталося, ми можемо посилатися на властивості таблиці класу wpdb:

global $wpdb; $user_count = $wpdb ->get_var ( "SELECT COUNT (*) FROM $wpdb ->users" );

Зверніть увагу, що в коді вище не використовується значення wp_users, а ім’я таблиці ми отримуємо за допомогою WordPress. Використання цих властивостей для генерації імен таблиць допоможе гарантувати коректний результат.

5. Не давайте постійно індексувати ваш сайт

Індексація потрібна, чи не так? Проте при створенні веб-сайту ви навряд чи хочете, щоб пошукові системи індексували його, поки ви не закінчили роботу над ним і не створили його структуру. Крім того, якщо у вас є тестовий сервер, на якому ви проводите оновлення свого ресурсу, ви не хочете, щоб пошукові системи, такі як Google, індексували ці сторінки, що повторюються. Коли є декілька сторінок з однаковим контентом, пошуковим системам складно вирішити, яка версія більше релевантна пошуковому запиту. Пошукові системи карають сайти з контентом, що повторюється, і ваш сайт просяде в результатах пошуку.

Як показано нижче, в налаштуваннях читання WordPress є прапорець, який свідчить: “Попросити пошукові системи не індексувати сайт” (хоча це не гарантує, що пошукові системи відпрацюють цей параметр) :

Тому, якщо ви хочете надійно запобігати індексації вашого сайту пошуковими системами, відредагуйте файл .htaccess і вставте наступний рядок:

Header set X-Robots-Tag "noindex, nofollow"

6. Перевіряйте два рази працездатність плагінів

Навіщо перевіряти, чи включена функція плагіну, якщо він активний? Звичайно, в 99 % випадків це так, проте цей один відсоток може привести до того, що ваш сайт виводитиме деякі помилки PHP. Щоб цього не сталося, ми можемо перевірити, чи активний плагін, перш ніж використати його функції. Якщо функція плагіну викликається через фронтенд, то треба включити бібліотеку plugin.php у код, щоб викликати функцію is_plugin_active ():

include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
if ( is_plugin_active( 'plugin-folder/plugin-main-file.php' ) ) {
// Запустити код плагіна
}

Цей метод зазвичай досить надійний. Проте можуть бути випадки, коли автор змінив ім’я основного каталогу плагіну. Надійнішим методом було б перевірити наявність класу в плагіні:

if ( class_exists ( 'WooCommerce' ) ) { // Плагін WooCommerce включений}

Взагалі, автори не часто міняють ім’я класу плагіну, тому краще використати цей підхід.

7. Не завантажуйте надто багато ресурсів

Навіщо вибірково завантажувати ресурси для сторінок? Немає вагомої причини завантажувати стилі і скрипти для плагіну, якщо цей плагін не використовується на сторінці, на якій знаходиться користувач. Використовуючи плагіни тільки тоді, коли це необхідно, ми зможемо істотно прискорити час завантаження сторінок. Візьмемо, наприклад, сайт WooCommerce, де нам треба, щоб плагін завантажувався тільки на торгових сторінках, що дозволить понизити навантаження на сайт. Для цього слід додати наступний код у файл шаблону functions.php:

function load_woo_scripts_styles(){
if( function_exists( 'is_woocommerce' ) ){
    // Only load styles/scripts on Woocommerce pages   
        if(! is_woocommerce() && ! is_cart() && ! is_checkout() ) {
 
            // Dequeue scripts.
            wp_dequeue_script('woocommerce'); 
            wp_dequeue_script('wc-add-to-cart'); 
            wp_dequeue_script('wc-cart-fragments');

            // Dequeue styles.
            wp_dequeue_style('woocommerce-general'); 
            wp_dequeue_style('woocommerce-layout'); 
            wp_dequeue_style('woocommerce-smallscreen'); 

            }
      }
}
add_action( 'wp_enqueue_scripts', ‘load_woo_scripts_styles');

Сценарії також можна видалити за допомогою функції wp_dequeue_script ($ handle) через дескриптор, з яким вони були зареєстровані. Аналогічно wp_dequeue_style ($ handle) запобіжить завантаженню таблиць стилів. Але, якщо це технічно складно для вас, можна встановити Plugin Organizer, який забезпечує вибіркове завантаження плагінів на основі певних критеріїв, таких як тип повідомлення або ім’я сторінки. Рекомендується відключити будь-які плагіни кешування, такі як W3Cache, щоб зміни стали помітними.

8. Не залишайте панель управління у верхній частині сайту

Чи можна залишити панель адміністратора WordPress видимою для усіх? Так, ви можете дозволити своїм користувачам отримати доступ до сторінок адміністратора. Але якщо ви хочете, щоб ваш сайт виглядав професійно, ви повинні відключити панель адміністратора для користувачів і залишити її тільки для себе:

add_action('after_setup_theme', 'remove_admin_bar');
function remove_admin_bar() {
if (!current_user_can('administrator') && !is_admin()) {
  show_admin_bar(false);
}
}

Цей код треба вставити у файл functions.php вашої теми. Таким чином, панель відображатиметься тільки для адміністратора сайту. Використовуючи current_user_can ($), можна додати користувачеві будь-яку роль, а також виключити його з панелі управління.

9. Використовуйте фільтр GetText

Можна використати CSS або JavaScript для зміни ярлика кнопки, що з цим не так? Так, можна. Проте ви додаєте зайвий код і витрачаєте додатковий час, щоб відобразити кнопку, коли замість цього ви можете використати один з найзручніших фільтрів в WordPress – gettext. Використовуючи цей фільтр спільно з textdomain, ми можемо змінювати текст до завантаження сторінки. Якщо змінюваний текст знаходиться в темі, знайдіть рядок коду load_theme_textdomain ($domain).

На прикладі WooCommerce розглянемо, як змінити текст, який з’являється для заголовка “Related Products”. Вставте наступний код у файл functions.php вашої теми:


function translate_string( $translated_text, $untranslated_text, $domain ) {
    if ( $translated_text == 'Related Products') {
                    $translated_text = __( 'Other Great Products', 'woocommerce' );
    }
    return $translated_text;
}
add_filter( 'gettext', 'translate_string', 15, 3 );

Цей фільтр застосовується до перекладеного тексту за допомогою функцій інтернаціоналізації __() і __e (), якщо textdomain визначений за допомогою вищезгаданих функцій.

_ e ( 'Related Products', 'woocommerce' );

10. Міняйте значення для постійних посилань

За замовчуванням WordPress використовує рядок запиту з ідентифікатором post, щоб повернути потрібний контент. Такий формат посилань буде незручним для використання, крім того, це може позначитися на індексації вашого ресурсу пошуковими системами. Включення постійних посилань, наприклад, в режим “Довільно”, допоможе підняти ранжирування сторінок, адже там можуть також знаходитися ключові слова. Краще всього це робити відразу після установки WordPress. Ви можете вибрати формат посилань на екрані “Налаштування постійних посилань” :

Висновок

Наведені тут приклади не є повним списком помилок, що допускаються, при роботі з сайтами на WordPress. Не соромтеся ділитися з нами деякими помилками, які ви зробили у минулому, і, що більше важливо, з будь-якими засвоєними Вами уроками, залишивши коментар нижче.

 “The 10 Most Common Mistakes That WordPress Developers Make”

Київ, Харків, Одеса, Дніпро, Запоріжжя, Кривий Ріг, Вінниця, Херсон, Черкаси, Житомир, Хмельницький, Чернівці, Рівне, Івано-Франківськ, Кременчук, Тернопіль, Луцьк, Ужгород, Кам'янець-Подільський, Стрий - за статистикою саме з цих міст програмісти найбільше переїжджають працювати до Львова. А Ви розглядаєте relocate?


Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *