WordPress: omiń 3 wpisy na stronie głównej
- Piotr Bartczak
- 2 paź 2012
- 1 minut(y) czytania
Na forum WordPressa mateoo88 zapytał(a):
Potrzebuję tak przerobić kod odpowiedzialny za wyświetlanie wpisów aby wyświetlały mi się one np od 4 (aby 4 wpis był wyświetlany jako pierwszy a 1,2 i 3 wpis był ignorowany).
I moja pierwsza myśl była następująca:
add_filter( 'posts_request', 'a' );
function a( $query )
{
if ( is_home() ) {
if ( preg_match( '/LIMIT (\d+), (\d+)/', $query, $matches ) ) {
$offset = 3;
$target = sprintf(
'LIMIT %d, %d',
$matches[1] + $offset,
$matches[2] + $offset
);
$query = preg_replace( '/LIMIT \d+, \d+/', $target, $query );
}
}
return $query;
}
Co oczywiście zadziała, ale nie jest to rozwiązanie eleganckie i pół dnia męczyło mnie, że powinno się to zrobić inaczej, jakoś tak bardziej „poprawnie”.
Po przejrzeniu w codex dostępnych filtrów, uznałem że dużo lepsze jest skorzystanie z filtra pre_get_posts, co dało efekt w postaci takiego kodu:
add_filter( 'pre_get_posts', 'iworks_skip_3_posts' );
function iworks_skip_3_posts( $query )
{
if ( is_home() ) {
$query->set( 'offset', 3 );
}
return $query;
}
Moim zdaniem, takie rozwiązanie jest zdecydowanie bardziej eleganckie.
Standardowo kod do pobrania:
pobierz plik: iworks_skip_3_posts.php.zip
Jak użyć podany kod?
Masz 3 rozwiązania:
wrzuć załączony plik do folderu wp-content/plugins, a potem włącz wtyczkę
wrzuć załączony plik do folderu wp-content/mu-plugins
dołącz kod do pliku functions.php aktualnie używanego motywu
コメント