Własne modyfikacje w functions.php WordPress

Poniższy poradnik jest skierowany do początkujących web-developerów znających WordPress w stopniu średnim.
Przedstawiamy kilka ciekawych funkcji i modyfikacji pliku functions.php
Uwaga: Wszelkie błędnie wykonane modyfikacje pliku functions.php moga skutować problemem w działaniu strony. Dlatego należy wykonywać je z zachowaniem kopii pliku functions.php jak i najlepiej całej strony.
O tym jak wykonać kopie zapasowe pisaliśmy tutaj.
Modyfikacje WordPress dodajemy w pliku functions.php – co wymagą podstawowej znajomości struktury kodu języka PHP. Oczywiście wykonywanie zmian bez posiadania kopii zapasowej pliku functions.php motywu, jest złym pomysłem – dlatego zalecamy wykonanie takiej kopi zapasowej pliku. Generalnie – jeśli nie jesteśmy pewni, zmian które wprowadzamy, zawsze warto posiadać pełną kopię zapasową naszej strony (pliki + baza).
Plik functions.php znajduje się w katalogu używanego przez nas motywu.
Dla mniej obeznanych/bardziej wygodnych polecamy wtyczkę Code Snippets
Wtyczka ta pozwoli na łatwe dodanie własnych kawałków kodu, bez potrzeby edycji bezpośrednio pliku functions.php
Informacja o WordPress
Standardowo WordPress wrzucą informację o sobie w nagłówku strony, boty korzystają z tej informacji, możemy ją wyłączyć dodając poniższy kod.
Info: ta informacja jest również umieszczona w pliku readme.html w katalogu głównym WordPress, można usunąć ten plik lub zabezpieczyć dostęp przez .htaccess
function wp_remove_version() { return ''; } add_filter('the_generator', 'wp_remove_version');
Wyłączenie linka do WP Manifest
remove_action( 'wp_head', 'wlwmanifest_link');
W celu zabezpieczenia swojego WordPress polecamy nasz wcześniejszy poradnik Poprawa bezpieczeństwa w WordPress
Wyłącz Strony z wyników wyszukiwań
function filter_search($query) { if ($query->is_search) { $query->set('post_type', 'post'); } return $query; } add_filter('pre_get_posts', 'filter_search');
Wyniki wyszukiwania – przekierowanie
Przekieruj od razu do widoku Wpisu, jeśli wyszukiwanie zwróci tylko jeden wpis.
add_action('template_redirect', 'redirect_single_post'); function redirect_single_post() { if (is_search()) { global $wp_query; if ($wp_query->post_count == 1 && $wp_query->max_num_pages == 1) { wp_redirect( get_permalink( $wp_query->posts['0']->ID ) ); exit; } } }
Excerpt
Zmiana ilości wyrazów w zajawce (excerpt) do np. dwudziestu.
function custom_excerpt_length( $length ) { return 20; } add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );
Pasek administratora
Wyłączanie paska WordPress na widoku strony po zalogowaniu, tzw. admin bar.
add_filter( 'show_admin_bar', '__return_false' );
TAGi na wszystko
Uwzględnianie wszystkich typów postów w TAGach
function any_ptype_on_tag($request) { if ( isset($request['tag']) ) $request['post_type'] = 'any'; return $request; } add_filter('request', 'any_ptype_on_tag');
Wyłącz możliwość niebezpiecznych zapytań przez boty
global $user_ID; if($user_ID) { if(!current_user_can('administrator')) { if (strlen($_SERVER['REQUEST_URI']) > 255 || stripos($_SERVER['REQUEST_URI'], "eval(") || stripos($_SERVER['REQUEST_URI'], "CONCAT") || stripos($_SERVER['REQUEST_URI'], "UNION+SELECT") || stripos($_SERVER['REQUEST_URI'], "base64")) { @header("HTTP/1.1 414 Request-URI Too Long"); @header("Status: 414 Request-URI Too Long"); @header("Connection: Close"); @exit; } } }
Wyłączanie wyszukiwania
Funkcja wyłączająca wyszukiwanie w obrębie strony. Funkcja działa ale zwróci zerowe wyniki.
function f_wylacz_search( $query, $error = true ) { if ( is_search() ) { $query->is_search = false; $query->query_vars[s] = false; $query->query[s] = false; if ( $error == true ) $query->is_404 = true; } } add_action( 'parse_query', 'f_wylacz_search' ); add_filter( 'get_search_form', create_function( '$a', "return null;" ) );
Ustawianie dodatkowego rozmiaru obrazków
Podczas wgrywania obrazów do WordPress, tworzone są z automatu mniejsze rozmiary takie jak
Miniaturka : (150px kwadrat)
Rozmiar Medium : (maximum 300 pikseli szerokość i wysokość);
Rozmiar Duży : (max. 1024 pikseli szerokość i wysokość);
Pełny : (oryginalny przesłany rozmiar).
Pełna lista
https://codex.wordpress.org/Post_Thumbnails
Poniżej możemy wymusić przechowywanie dodatkowych rozmiarów
Na przykładzie nazwa=”gal_min” rozmiar 400×300, przytnij (true)
Na przykładzie nazwa=”sidebar” rozmiar 100×100, nie przycinaj (false)
add_theme_support( 'post-thumbnails' ); add_image_size( 'gal_min', 400, 300, true ); add_image_size( 'sidebar', 100, 100, false );
Własny [shortcode]
Shortcode to skrócona nazwa funkcji w PHP, która zostanie wykonana po wpisaniu [nazwa] w edytorze treści WordPress.
Wyświetl obecny rok
Shortcode: [rok]
function wyswietl_rok() { $year = date('Y'); return $year; } add_shortcode('rok', 'wyswietl_rok');
Wyświetl przycisk Facebook polub
Shortcode: [fblike]
function facebook_like() { echo '<iframe src="//www.facebook.com/plugins/like.php?href=http://www.facebook.com/plugins/like.php?href=<?php echo rawurlencode(get_permalink()); ?>&width&layout=standard&action=like&show_faces=true&share=true&height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; height:80px;" allowTransparency="true"></iframe>'; }_shortcode('fblike', 'facebook_like');
Modyfikacje zostały przetestowane z WordPress w wersji 5.0.1.
To wszystko!
Mamy nadzieję że pomoże Wam to w zrozumieniu, jak można modyfikować swój WordPress projektując lub administrując witrynę.
Sprawdź też część #2: Jak edytować plik functions.php w WordPress i ciekawe kody
Szukasz więcej ciekawych kodów WordPress?
Koniecznie zajrzyj na naszą wiki do sekcji Pomoc WordPress. Znajdziesz tam nie tylko porady dla początkujących ale i także dla developerów projektujących własne motywy WordPress.