У папці будь-якого шаблону для WordPress багато різних файлів, але основним вважається functions.php. Він призначений для деяких унікальних PHP функцій, передбачених у платформі WordPress. Цей файл дозволяє змінювати чи вдосконалювати властивості і функції WordPress без необхідності копатися в ядрі системи:

Існує безліч цікавих способів, з допомогою яких можна поліпшити functions.phpі наша сьогоднішня стаття присвячена саме їм.

1. Змінюємо логотип в панелі адміністрування

Якщо ви створюєте унікальний шаблон за замовленням клієнта, цей трюк може допомогти. Все що потрібно – додати цей код всередину файлу functions.php:

//хук для зміни шапки адміністративної панелі
add_action(‘admin_head’, ‘my_custom_logo’);
functionmy_custom_logo() {
echo’
‘;
}

2. Відключаємо внутрішній пошук по WordPress

Внутрішню систему пошуку WordPress можна відключити за допомогою functions.php. Пошуковик залишиться доступним, але не буде видно в бічній панелі. Для цього потрібно додати наступний код в WordPress functions PHP:

functionfb_filter_query( $query, $error = true ) {
if ( is_search() ) {
$query->is_search = false;
$query->query_vars[s] = false;
$query->query[s] = false;
// error to
if ( $error == true )
$query->is_404 = true;
}
}
add_action( ‘parse_query’, ‘fb_filter_query’ );
add_filter( ‘get_search_form’, create_function( ‘$a’, «return null,» ) );

3. Використовуємо RSS для управління доступністю опублікованих постів

Велика частина блогерів публікують записи одразу після написання, а потім ще довгий час «виловлюють» помилки і помилки. Саме тому публікацію записів слід відкладати на 5-10 хвилин, і виводити посилання в RSS-стрічці тільки після того, як всі помилки будуть виправлені. Щоб отримати таку перевагу, скористайтеся цим кодом:

functionpublish_later_on_feed($where) {
global $wpdb;
if ( is_feed() ) {
// дата та час у форматі WP
$now = gmdate(‘Y-m-d H:i:s’);
// час очікування; + device
$wait = ’10’; // integer
// http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timestampdiff
$device = ‘MINUTE’; //MINUTE, HOUR, DAY, WEEK, MONTH, YEAR
// додаємо синтаксис SQL до стандартної змінної $where
$where .= «AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, ‘$now’) > $wait «;
}
return $where;
}
add_filter(‘posts_where’, ‘publish_later_on_feed’);

4. Редагуємо довжину анонсу запису (excerpt)

Анонс запису складається не більш ніж з 55 слів, що створює певні складності для дизайнерів. Щоб змінити довжину анонсу, скористайтеся наступною public function PHP:

functionnew_excerpt_length($length) {
return 100;
}
add_filter(‘excerpt_length’, ‘new_excerpt_length’);

5. Відключаємо RSS-стрічку

Статичних сайтів на WordPress зовсім не потрібна RSS-стрічка, і тому краще вимкнути за допомогою наступної функції:

functionfb_disable_feed() {
wp_die( __(‘RSS-стрічка недоступна! Ласкаво просимо на головну сторінку!’) );
}
add_action(‘do_feed’, ‘fb_disable_feed’, 1);
add_action(‘do_feed_rdf’, ‘fb_disable_feed’, 1);
add_action(‘do_feed_rss’, ‘fb_disable_feed’, 1);
add_action(‘do_feed_rss2’, ‘fb_disable_feed’, 1);
add_action(‘do_feed_atom’, ‘fb_disable_feed’, 1);

6. Підключаємо функцію мініатюри запису

В WordPress можна використовувати мініатюри записів, сторінок або категорій, які роблять сторінки більш презентабельними. Щоб включити цей функціонал, скопіюйте наступний код і вставте його в файл functions.php:

add_theme_support( ‘post-thumbnails’ );

У більшості випадків розмір мініатюр визначається налаштуваннями CMS, однак і цей момент підвладний тим, хто вміє працювати з файлом WordPress functions.php.

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

Щоб WordPress створював кілька копій мініатюри зображення, потрібно включити в код функцію add_image_size() і вказати розміри.

Для цього необхідно вставити наступний код у файл functions.php:

// Звичайний розмір
add_image_size( ‘regular’, 400, 350, true );
// Середній розмір
add_image_size( ‘medium’, 650, 500, true );
// Великий розмір
add_image_size( ‘large’, 960, » );
Завантажуємо jQuery з CDN Google
// динамічна завантаження jQuery
add_action( ‘init’, ‘jquery_register’ );
// реєстрація jQuery в Google
functionjquery_register() {
if ( !is_admin() ) {
wp_deregister_script( ‘jquery’ );
wp_register_script( ‘jquery’, ( ‘https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js’ ), false, null, ‘true’);
wp_enqueue_script( ‘jquery’ );
}
}

7. Прибираємо інформацію про використовуваної версії CMS

// прибираємо відображення версії системи з шапки сайту і каналів
functioncomplete_version_removal() {
return «;
}
add_filter(‘the_generator’, ‘complete_version_removal’);

Забороняємо доступ до функцій меню за логінів або ролям

Цю PHP static function можна використовувати для того, щоб заборонити доступ до певних функцій меню певним користувачам:

{
$restricted = array(__(‘Posts’),
__(‘Media’),
__(‘Links’),
__(‘Pages’),
__(‘Comments’),
__(‘Appearance’),
__(‘Plugins’),
__(‘Users’),
__(‘Tools’),
__(‘Settings’)
);
end ($menu);
while (prev($menu)){
$value = explode(‘ ‘,$menu[key($menu)][0]);
if(in_array($value[0] != NULL?$value[0]:»» , $restricted)){unset($menu[key($menu)]);}
}// end while
}// end if
}
add_action(‘admin_menu’, ‘ah_remove_menus’);

8. Налаштування довжини анонсу запису

Як я вже сказав, стандартна довжина анонсу запису становить 55 слів, але можна скорегувати це значення за допомогою наступного фрагменту:

functionnew_excerpt_length($length) {
return 150;
}
add_filter(‘excerpt_length’, ‘new_excerpt_length’);

9. Динамічна інформація про авторське право в підвалі

Багато сайтів не надають значення інформації про авторські права. Деякі навіть не вказують роки роботи ресурсу. Не варто недооцінювати цю можливість, так як формат © 2012-2017 додає репутації сайту. Я вирішив спростити цю задачу, і тепер можна просто скопіювати даний фрагмент коду в файл WordPress functions php:

/* — */
functionah_dynamic_copyright() {
global $wpdb;
$copyright_dates = $wpdb->get_results(»
SELECT
YEAR(min(post_date_gmt)) AS firstdate,
YEAR(max(post_date_gmt)) AS lastdate
FROM
$wpdb->posts
WHERE
post_status = ‘publish’
«);
$output = «;
if($copyright_dates) {
$copyright = «© » . $copyright_dates[0]->firstdate;
if($copyright_dates[0]->firstdate != $copyright_dates[0]->lastdate) {
$copyright .= ‘-‘ . $copyright_dates[0]->lastdate;
}
$output = $copyright;
}
return $output;
}

10. Доповнюємо профілі авторів довільними полями

Наостанок хочу поділитися корисною PHP function, яка дозволяє додавати довільні поля і інформацію в профіль авторів:

functionah_new_contactmethods( $contactmethods ) {
// Посилання на Twitter
$contactmethods[‘twitter’] = ‘Twitter’;
// Посилання на Facebook
$contactmethods[‘facebook’] = ‘Facebook’;
return $contactmethods;
}
add_filter(‘user_contactmethods’,’ah_new_contactmethods’,10,1);

Переклад статті «10 WordPress Tricks For The Functions.php File» був підготовлений дружною командою проекту Сайтостроение від А до Я.