Jak edytować plik functions.php w WordPress i ciekawe kody

Poradnik jest rozwinięciem Własne modyfikacje w WordPress poprzez edycję pliku functions.php.
3 sposoby na edycję pliku functions.php
Chcąc samodzielnie edytować plik functions.php możemy to zrobić używając jednego z trzech sposobów wymienionych poniżej.
Każdy motyw WordPress używa własnego pliku functions.php, który znajduje się w jego katalogu głównym.
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.
Edycja functions.php – Sposób 1
O ile nie mamy zablokowanej możliwości edycji plików motywu, którą często wyłącza się z przyczyn bezpieczeństwa (funkcję taką posiada m.in. opisywana przez nas wtyczka All in One WordPress Security – opisywana w poradniku Poprawa bezpieczeństwa w WordPress) najprościej modyfikację wykonać bezpośrednio z poziomu Kokpitu WordPress.
Kopia zapasowa: w tym przypadku możemy również wykonać kopiując całą zawartość pliku do notatnika, zapisując lokalnie na dysku swojego komputera, przed dokonaniem zmian.
Edycja functions.php – Sposób 2
Drugim sposobem jest edycja pliku z poziomu panelu hostingowego DirectAdmin.
Kopia zapasowa: tu możemy wykonać kopię zapasową klikając w Save As bezpośrednio w edytorze i nazwać plik jako „functions.php-kopia” zanim dokonamy jakichkolwiek zmian.
Edycja functions.php – Sposób 3
Ostatnim sposobem jest użycie Klienta FTP, np. WinSCP lub Filezilla i połączenie się z naszym serwerem. Jest to metoda dla średnio-zaawansowanych, gdyż wymaga konfiguracji takiego połączenia. Opis zamieściliśmy na naszej Wiki.
Ciekawe kody functions.php
Przedstawiamy kolejnych kilka ciekawych modyfikacji pliku functions.php
Część pierwsza dostępna jest tutaj
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 również tutaj.
Pokaż nazwę używanego szablonu widoku
Przydatne, gdy pracujemy z gotowym motywem i nie znamy jego struktury, a chcemy wykonać ręczne modyfikacje.
add_action('wp_head', 'show_template');
function show_template() {
global $template;
echo basename($template);
}Usuń block library
Ścigamy się w Google Page Speed Insights i nie używamy Gutenberga?
function wpassist_remove_block_library_css(){
wp_dequeue_style( 'wp-block-library' );
}
add_action( 'wp_enqueue_scripts', 'wpassist_remove_block_library_css' );Usuń google reCaptcha badge
Wg. Google reCaptcha powinna się wyświetlać na każdej podstronie – jednak obniża nam to prędkość i ocenę Google, także obejściem jest usunięcie skryptów reCaptcha ze wszystkich podstron, za wyjątkiem strony z nazwą 'kontakt’.
Wartość is_page() przyjmuje Page ID, tytuł, slug, lub tablicę wspomnianych.
function oiw_disable_recaptcha_badge_page(){
if ( !is_page( array( 'kontakt' ) ) ) {
wp_dequeue_script('google-recaptcha');
wp_dequeue_script('wpcf7-recaptcha');
wp_dequeue_style('wpcf7-recaptcha');
}
}
add_action( 'wp_enqueue_scripts', 'oiw_disable_recaptcha_badge_page' );Mapa strony bez nazw użytkowników
Mapa strony XML zwraca również nazwy profili użytkowników? Nie używamy żadnej wtyczki do zarządzania Mapą strony? Możemy wykluczyć z niej użytkowników.
add_filter( 'wp_sitemaps_add_provider', function ($provider, $name) {
return ( $name == 'users' ) ? false : $provider;
}, 10, 2);Dodaj klasę CSS do pozycji menu
W celu uzyskania większej kontroli CSS nad stylem menu naszego motywu, możemy dodać własną klasę do UL->LI.klasa_test . Każda pozycja menu będzie miała dodatkową klasę „klasa_test”, a my możemy wtedy mieć własną kotwicę aby je stylować w arkuszach styli.
function add_classes_on_li($classes, $item, $args) {
$classes[] = 'klasa_test';
return $classes;
}
add_filter('nav_menu_css_class','add_classes_on_li',1,3);Przydatna jest też zamiana klas w menu. Tu zamiana nazwy klasy „sub-menu” na nazwę „dropdown-menu”
function replace_submenu_class($menu) {
$menu = preg_replace('/ class="sub-menu"/','/ class="dropdown-menu" /',$menu);
return $menu;
}
add_filter('wp_nav_menu','replace_submenu_class');Klasa aktywnej pozycji menu?
function special_nav_class ($classes, $item) {
if (in_array('current-menu-item', $classes) ){
$classes[] = 'active ';
}
return $classes;
}
add_filter('nav_menu_css_class' , 'special_nav_class' , 10 , 2);Własny widget informacyjny
Przydatne dla developerów, można podać pracownikowi klienta, dla którego wykonujemy stronę małą informację, którą zobaczy w Kokpicie WordPress.
wp_add_dashboard_widget('custom_help_widget', 'Potrzebujesz pomocy?', 'custom_dashboard_help');
}
function custom_dashboard_help() {
echo '<p>Potrzebujeszy pomocy w edycji bądź konfiguracji? Skontaktuj się ze mną <a href="mailto:mojemail@gmail.com">tutaj</a>.</p><p>Więcej nowości hostingowych i poradników? Odwiedź <a href="https://blog.hitme.pl" target="_blank">Blog HitMe</a>.</p>';
}Własne logo na ekranie logowania WP
Ekran logowania do WordPress zawiera logo WP. Jeśli chcemy zbrandować panel i wymienić na nasze logo, wystarczy zmodyfikować ścieżkę do naszego pliku logo w pozycji background-image i dołączyć poniższy kod do functions.php. Możemy też użyć własnego dopisku intro.
function my_login_logo_one() {
echo '
<style type="text/css">
body.login div#login h1 a {
background-image: url("'.get_bloginfo("template_directory").'/img/logo/moje-logo.png");
background-size:auto;
height:100px;
width:auto;
margin-bottom:0px;
}
body.login div#login h1:after{
content: "Mój włąsny tekst intro";
display: inline-block;
color: #222;
font-family: SANS-SERIF;
text-align:right;
font-size: 12px;
height: 20px;
width: 100%;
z-index: 999999;
}
}
</style>
';
}
add_action( 'login_enqueue_scripts', 'my_login_logo_one' );Modyfikacje zostały przetestowane z WordPress w wersji 5.7.2.
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.








Dodaj komentarz