Jeśli korzystasz z WordPressa dłużej niż kilka dni, to na pewno zauważyłeś, że wyszukiwarka wpisów w panelu admina działa… no cóż, różnie. Czasem znajdzie to, czego szukasz, a czasem wyświetli wszystko, tylko nie ten jeden konkretny wpis, który masz na myśli. Domyślna wyszukiwarka WordPressa przeszukuje tytuł, treść, fragmenty, a nawet metadane, co bywa pomocne, ale równie często przeszkadza.
Co jednak zrobić, jeśli chcesz wyszukiwać wyłącznie po tytule wpisu? Na przykład wtedy, gdy masz setki lub tysiące postów i zależy Ci na szybkim odnalezieniu konkretnego artykułu, którego tytuł pamiętasz, ale nie chcesz, aby WordPress przeszukiwał całą zawartość?
Dobra wiadomość jest taka, że da się to zrobić – i to na kilka sposobów. W tym artykule pokażę Ci:
- dlaczego WordPress domyślnie nie pozwala na wyszukiwanie tylko po tytule,
- jak zmodyfikować wyszukiwarkę w panelu admina,
- jak dodać własny filtr wyszukiwania,
- jak stworzyć prostą wtyczkę, która to umożliwi,
- oraz jak korzystać z gotowych snippetów kodu.
Zaczynajmy.
Dlaczego WordPress nie wyszukuje tylko po tytule?
WordPress jest systemem blogowym, który z założenia ma być prosty i intuicyjny. Domyślna wyszukiwarka w panelu admina została zaprojektowana tak, aby przeszukiwać jak najwięcej pól – bo w większości przypadków użytkownik nie pamięta dokładnego tytułu wpisu, ale kojarzy jakieś słowo z treści.
Problem pojawia się wtedy, gdy:
- masz bardzo dużo wpisów,
- wiele z nich zawiera podobne słowa kluczowe,
- chcesz znaleźć wpis o konkretnym tytule,
- a WordPress wyświetla Ci 200 wyników, bo to słowo pojawia się w treści wielu postów.
Wtedy zaczyna się klikanie, filtrowanie, przewijanie… i tracisz czas.
Dlatego warto zmodyfikować wyszukiwarkę tak, aby działała tylko po tytule – przynajmniej wtedy, gdy tego potrzebujesz.
Jak działa wyszukiwanie wpisów w panelu admina?
W panelu admina WordPress korzysta z klasy WP_Query, która odpowiada za pobieranie wpisów z bazy danych. Gdy wpisujesz coś w pole wyszukiwania, WordPress tworzy zapytanie SQL, które wygląda mniej więcej tak:
WHERE post_title LIKE '%szukana fraza%' OR post_content LIKE '%szukana fraza%' OR post_excerpt LIKE '%szukana fraza%'
Czyli przeszukuje:
- tytuł,
- treść,
- fragment,
- a czasem także meta dane.
A my chcemy, żeby przeszukiwał tylko tytuł.
Jak wyszukiwać wpisy tylko po tytule? (Najprostsza metoda)
Najprostszy sposób to dodanie krótkiego fragmentu kodu do pliku functions.php Twojego motywu potomnego (lub do własnej wtyczki).
Poniżej znajdziesz gotowy kod, który sprawi, że wyszukiwarka w panelu admina będzie działała wyłącznie po tytule wpisu.
Kod: wyszukiwanie tylko po tytule w panelu admina
function admin_search_by_title( $query ) {
global $pagenow;
if ( is_admin() && $pagenow == 'edit.php' && $query->is_search() ) {
$search_term = $query->query_vars['s'];
$query->query_vars['s'] = '';
$query->set( 'post_title__like', $search_term );
}
}
add_action( 'pre_get_posts', 'admin_search_by_title' );
Jak to działa?
- Funkcja sprawdza, czy jesteś w panelu admina.
- Sprawdza, czy jesteś na liście wpisów (
edit.php). - Sprawdza, czy wykonujesz wyszukiwanie.
- Pobiera wpisaną frazę.
- Czyści domyślne wyszukiwanie.
- Ustawia własny parametr
post_title__like, który filtruje wyniki tylko po tytule.
Proste, skuteczne i działa od razu.
Co jeśli chcesz bardziej zaawansowane wyszukiwanie?
Może chcesz:
- wyszukiwać tylko po tytule, ale czasem po treści,
- dodać checkbox „Szukaj tylko po tytule”,
- filtrować po typie wpisu,
- filtrować po kategorii i tytule jednocześnie.
To również jest możliwe – i to bez większego wysiłku.
Dodanie checkboxa „Szukaj tylko po tytule”
Jeśli chcesz mieć wybór, możesz dodać prosty checkbox nad listą wpisów.
Kod: dodanie checkboxa
function add_title_search_checkbox() {
$checked = isset($_GET['title_only']) ? 'checked' : '';
echo '<label style="margin-left:10px;">
<input type="checkbox" name="title_only" value="1" ' . $checked . '> Szukaj tylko po tytule
</label>';
}
add_action( 'restrict_manage_posts', 'add_title_search_checkbox' );
Kod: obsługa checkboxa
function filter_search_by_title_checkbox( $query ) {
global $pagenow;
if ( is_admin() && $pagenow == 'edit.php' && $query->is_search() ) {
if ( isset($_GET['title_only']) && $_GET['title_only'] == '1' ) {
$search_term = $query->query_vars['s'];
$query->query_vars['s'] = '';
$query->set( 'post_title__like', $search_term );
}
}
}
add_action( 'pre_get_posts', 'filter_search_by_title_checkbox' );
Teraz masz pełną kontrolę – możesz wyszukiwać po tytule tylko wtedy, gdy tego chcesz.
Jak stworzyć mini‑wtyczkę do wyszukiwania tylko po tytule?
Jeśli nie chcesz modyfikować motywu, możesz stworzyć własną wtyczkę. To naprawdę proste – wystarczy jeden plik.
Krok 1: Utwórz folder
W katalogu wp-content/plugins/ utwórz folder:
search-by-title-admin
Krok 2: Utwórz plik PHP
W środku utwórz plik:
search-by-title-admin.php
Krok 3: Wklej kod
<?php
/*
Plugin Name: Admin Search by Title
Description: Wyszukiwanie wpisów w panelu admina tylko po tytule.
Version: 1.0
Author: Twoje Imię
*/
function admin_search_by_title_plugin( $query ) {
global $pagenow;
if ( is_admin() && $pagenow == 'edit.php' && $query->is_search() ) {
$search_term = $query->query_vars['s'];
$query->query_vars['s'] = '';
$query->set( 'post_title__like', $search_term );
}
}
add_action( 'pre_get_posts', 'admin_search_by_title_plugin' );
Krok 4: Aktywuj wtyczkę
Wejdź w:
Kokpit → Wtyczki → Zainstalowane wtyczki → Aktywuj
I gotowe.
Czy można wyszukiwać tylko po tytule bez kodu?
Tak, ale tylko za pomocą wtyczek zewnętrznych. Niestety większość z nich dotyczy wyszukiwania na stronie frontowej, a nie w panelu admina.
Najbliżej tego celu są:
- Admin Columns Pro – pozwala filtrować po wielu polach, ale nie ma natywnego filtra „tylko tytuł”.
- SearchWP – świetna wtyczka, ale działa głównie na front-endzie.
- Relevanssi – również bardziej do wyszukiwania dla użytkowników.
Dlatego najskuteczniejszą metodą pozostaje dodanie własnego kodu.
Dlaczego warto wyszukiwać tylko po tytule?
Jeśli masz małego bloga z kilkoma wpisami, pewnie nie zauważysz różnicy. Ale jeśli prowadzisz:
- portal informacyjny,
- sklep WooCommerce,
- blog z tysiącami artykułów,
- stronę z dużą liczbą custom post types,
to wyszukiwanie tylko po tytule może być ogromnym ułatwieniem.
Zalety:
- szybciej znajdziesz konkretny wpis,
- mniej wyników oznacza mniej klikania,
- wyszukiwarka działa szybciej,
- nie przeszukuje niepotrzebnych pól,
- możesz łatwo odnaleźć wpisy o podobnych tytułach.
Jak działa parametr post_title__like?
To nie jest oficjalny parametr WordPressa – to tzw. meta‑query hack, który działa dzięki filtrowi posts_where.
Jeśli chcesz pełną kontrolę, możesz użyć własnego filtra SQL.
Kod: pełna kontrola nad SQL
function search_only_title_sql( $where, $query ) {
global $pagenow, $wpdb;
if ( is_admin() && $pagenow == 'edit.php' && $query->is_search() ) {
$search = $query->get( 's' );
if ( ! empty( $search ) ) {
$where = " AND {$wpdb->posts}.post_title LIKE '%" . esc_sql( $search ) . "%' ";
}
}
return $where;
}
add_filter( 'posts_where', 'search_only_title_sql', 10, 2 );
Ten kod nadpisuje całe wyszukiwanie i sprawia, że WordPress przeszukuje wyłącznie tytuł wpisu.
Wyszukiwanie wpisów tylko po tytule w panelu admina WordPress to jedna z tych funkcji, które powinny być wbudowane w system, ale z jakiegoś powodu ich nie ma. Na szczęście dodanie takiej możliwości jest bardzo proste – wystarczy kilka linijek kodu.