Witam szanownych użytkowników forum w moim kolejnym poradniku
Dzisiaj pokarzę dla nieuświadomionych jak zmodyfikować w łatwy sposób WP bez jakikolwiek wtyczek. Starzy wyjadacze raczej nic nowego tutaj nie znajdą, a nowym i nie świadomym użytkownikom poradnik ten pomoże uniknąć sterty niepotrzebnych wtyczek ;-) Zacznijmy od początku :-)
Prolog
Lata świetlne temu jak odkryłem WordPressa, chcą dodać jakąś pierdołę na stronę, instalowałem na jej potrzebę odpowiednią wtyczkę. W pewnym momencie tych wtyczek zrobiło się ponad 40
Przeraziłem się okropnie, bo przecież ówcześni spece od WP pisali, że każdy plugin to obciążenie dla strony. Dzisiaj wiem, że to pół prawdy. Dobrze napisana wtyczka nie robi tego wcale lub robi to w nieznacznym stopniu. W każdym bądź razie zmotywowało mnie to do szukania innych rozwiązań. Szukałem wtyczek które by miały kilka rozwiązań w jednym, zbędne wtyczki po prostu wyrzuciłem, a resztę modyfikacji wrzuciłem prosto w kod motywu czy innych plików WP :-) Nauka nie poszła w las, nauczyłem się dłubać w WordPress, szukać okrężnych bardziej trwałych rozwiązań.
Wyobraźcie sobie sytuację. Używacie jakiejś wtyczki przez x lat. Nagle wtyczka traci wsparcie. Pół biedy jak znajdziemy jakiś odpowiednik, gorzej jak wtyczka nie ma swojego odpowiednika, a przecież nie będziemy trzymać na swoich wychuchanych stronkach nieaktualnych pluginów. Co w tedy robicie? Albo na szybkości uczycie się dłubać w WP, albo przemawiacie do portfela jakiegoś programisty ;-)
Dobra koniec marudzenia, przechodzimy do rzeczy ;-)
Zanim zacznę, informuje, że wszelkie modyfikacje robicie na własną odpowiedzialność. Za wszelkie szkody wynikłe na waszych stronach nie ponoszę odpowiedzialność. Krótko mówiąc zróbcie sobie backup bazy danych i wszystkich plików zanim zaczniecie kombinować :-).
Wszelkie modyfikacje oparte o motyw polecam robić na tak zwanym motywie potomnym. Nie będę pisał co to jest, odsyłam do źródła:
https://codex.wordpress.org/Child_Themes
Dokumentacja WP trochę komplikuje, więc jak ktoś nie ogarnie, pisać w tym temacie, pomogę :-) Niektóre theme nie obsługują tego cudownego wynalazku. Miałem niefart korzystać z takiego ustrojstwa
wp-config.php
Zaczniemy od modyfikacji wp-config.php, plik ten znajduje się w katalogu głównym naszej strony. Zakładam, że macie zrobioną co najmniej kopie tego pliku w razie komplikacji!
WordPress domyślnie okresowo zapisuje kopie wpisu podczas jego edycji, oraz przy każdym kliknięciu, "zaktualizuj", "zapisz szkic". Jak łatwo się domyślić taka opcja szybko może nam zapchać bazę danych. Na szczęście kopie te można ograniczyć a nawet wyłączyć. Do pliku wklejamy poniższy fragment kodu:
Kod PHP:
define('WP_POST_REVISIONS', false);
Całkowicie wyłącza kopie wpisów.
Kod PHP:
define('WP_POST_REVISIONS', 3);
Ogranicza wersje wpisów do 3 kopi.
Kod polecam w kleić pod linijką:
Kod:
define('WP_DEBUG', false);
Podobno jeśli powyższe linijki wkleimy na samym dole pliku, kod nie zadziała. Nie wiem, nie sprawdzałem.
Gdy korzystamy z wtyczki cache, lub z obiektowego cache, w pliku powinna się znaleźć linijka:
Kod PHP:
define('WP_CACHE', true);
Osobiście wklejam ten fragment tuż pod:
functions.php
Teraz będziemy korzystać z naszego wcześniej utworzonego motywu potomnego
Dzięki takiemu zabiegowi, przy każdej aktualizacji motywu głównego nie będziemy musieli na nowo modyfikować wcześniej zmienionych plików. Aczkolwiek tutaj też zdarzają się wyjątki od reguły ;-)
Poniższe modyfikacje wklejamy na końcu pliku przed fragmentem kodu:
Zmiana domyślnego obrazka - Gravatar:
Kod PHP:
add_filter( 'avatar_defaults', 'wpb_new_gravatar' );
function wpb_new_gravatar ($avatar_defaults) {
$myavatar = 'http://moja-domena.pl/link-do-obrazka.png';
$avatar_defaults[$myavatar] = "Default Gravatar";
return $avatar_defaults;
}
W przykładzie podałem ścieżkę bezwzględną do obrazka, ale osobiście zalecam w razie zmiany domeny używania ścieżek względnych.
Czyli zamieniamy
http://moja-domena.pl/link-do-obrazka.png na /link-do-obrazka.png. Jeśli nasza strona ma odpalony protokół SSL, http:// zamieniamy na https:// w przypadku ścieżki bezwzględnej.
Ikony wpisów w kanale RSS
Jeżeli nasz moty nie obsługuje ikon wpisów w kanale RSS, do pliku dodajemy poniższy kod:
Kod PHP:
function rss_post_thumbnail($content) {
global $post;
if(has_post_thumbnail($post->ID)) {
$content = '<p>' . get_the_post_thumbnail($post->ID) .
'</p>' . get_the_content();
}
return $content;
}
add_filter('the_excerpt_rss', 'rss_post_thumbnail');
add_filter('the_content_feed', 'rss_post_thumbnail');
Obsługa shortcode w widgetach tekstowych
Kod PHP:
add_filter('widget_text', 'do_shortcode');
Dodanie kategorii i tagów dla stron
Nie wiem, po co to komu, ale dodaje jako ciekawostkę ;-)
Kod PHP:
// add tag and category support to pages
function tags_categories_support_all() {
register_taxonomy_for_object_type('post_tag', 'page');
register_taxonomy_for_object_type('category', 'page');
}
// ensure all tags and categories are included in queries
function tags_categories_support_query($wp_query) {
if ($wp_query->get('tag')) $wp_query->set('post_type', 'any');
if ($wp_query->get('category_name')) $wp_query->set('post_type', 'any');
}
// tag and category hooks
add_action('init', 'tags_categories_support_all');
add_action('pre_get_posts', 'tags_categories_support_query');
Wyświetlenie daty ostatniej aktualizacji wpisu
Ciekawa opcja jeżeli często aktualizujecie wcześniej dodane wpisy.
Kod PHP:
function wpb_last_updated_date( $content ) {
$u_time = get_the_time('U');
$u_modified_time = get_the_modified_time('U');
if ($u_modified_time >= $u_time + 86400) {
$updated_date = get_the_modified_time('F jS, Y');
$updated_time = get_the_modified_time('h:i a');
$custom_content .= '<p class="last-updated">Ostatnia aktualizacja '. $updated_date . ' at '. $updated_time .'</p>';
}
$custom_content .= $content;
return $custom_content;
}
add_filter( 'the_content', 'wpb_last_updated_date' );
Tutaj jeszcze wspomnę, że dwie poniższe linie odpowiadają za czas:
Kod PHP:
$updated_date = get_the_modified_time('F jS, Y');
$updated_time = get_the_modified_time('h:i a');
Pierwsza linijka za dzień, miesiąc, rok. Druga za godzinę. Jak ktoś działa pod PL, warto te dwie linijki zmienić pod polskie realia. Amerykanie wpisują najpierw miesiąc, dzień, rok i zegar 12 godziny. U nas zaś wpisujemy zazwyczaj dzień, miesiąc, rok zegar 24 godzinny.
Jak to zmodyfikować, odsyłam do źródła:
https://codex.wordpress.org/Formatting_Date_and_Time
Usuniecie ze źródła strony wersji naszego WordPressa
Kod PHP:
function wpbeginner_remove_version() {
return '';
}
add_filter('the_generator', 'wpbeginner_remove_version');
.htaccess
Plik ten znajduje się w katalogu głównym twojej strony. Koniecznie zrób jego kopię przed modyfikacją.
Włączenie pamięci podręcznej przeglądarki dla naszej strony
Na końcu pliku dodajemy:
Kod:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
ExpiresByType text/html "access plus 1 seconds"
ExpiresByType image/gif "access plus 30 days"
ExpiresByType image/jpeg "access plus 30 days"
ExpiresByType image/png "access plus 30 days"
ExpiresByType image/jpg "access plus 30 days"
ExpiresByType image/svg+xml "access plus 30 days"
ExpiresByType text/css "access plus 30 days"
ExpiresByType text/javascript "access plus 30 days"
ExpiresByType application/javascript "access plus 30 days"
ExpiresByType application/x-javascript "access plus 30 days"
ExpiresByType text/xml "access plus 60 minutes"
</IfModule>
Poszczególne parametry możemy modyfikować wedle potrzeb.
Na razie tyle. Temat będę aktualizował na bieżąca jak tylko coś mi się przypomni :-)
Macie jakieś pytania? Walcie śmiało :-) Korzystacie z modyfikacji nie wymienionych przeze mnie? Również zapraszam do tematu :-)
Zauważyliście jakiś błąd? Dzwońcie nawet o 3 w nocy