Własne modyfikacje w functions.php WordPress

Obrazek dla 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

kod usuń wp generator

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()); ?>&amp;width&amp;layout=standard&amp;action=like&amp;show_faces=true&amp;share=true&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; height:80px;" allowTransparency="true"></iframe>';
}_shortcode('fblike', 'facebook_like');

Własne modyfikacja functions.php

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.