Niestandardowy bezpośredni link do wyszukiwania i stronicowania
@Chip Bennet pomógł mi w poprzednim pytaniu i opublikował całą swoją funkcję paginacji. Ta funkcja działa dla mnie doskonale, ale chciałbym mieć niestandardowe łącza bezpośrednie w języku niemieckim.
/**
* Paginate Archive Index Page Links
*/
function oenology_get_paginate_archive_page_links( $type="plain", $endsize = 1, $midsize = 1 ) {
global $wp_query, $wp_rewrite;
$wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1;
// Sanitize input argument values
if ( ! in_array( $type, array( 'plain', 'list', 'array' ) ) ) $type="plain";
$endsize = (int) $endsize;
$midsize = (int) $midsize;
// Setup argument array for paginate_links()
$pagination = array(
'base' => @add_query_arg('paged','%#%'),
'format' => '',
'total' => $wp_query->max_num_pages,
'current' => $current,
'show_all' => false,
'end_size' => $endsize,
'mid_size' => $midsize,
'type' => $type,
'prev_text' => '<<',
'next_text' => '>>'
);
if( $wp_rewrite->using_permalinks() )
$pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg( 's', get_pagenum_link( 1 ) ) ) . 'page/%#%/', 'paged' );
if( !empty($wp_query->query_vars['s']) )
$pagination['add_args'] = array( 's' => get_query_var( 's' ) );
return paginate_links( $pagination );
}
Używam tej funkcji w moim search.php
taki szablon.
<div class="pagination">
<?php echo oenology_get_paginate_archive_page_links(); ?>
</div>
Jeśli wyszukuję w moim pasku wyszukiwania, adres URL wynikowej strony wygląda tak
mysite.com/?s=term
Chciałbym mieć niemiecki suche
(oznacza „szukaj”) zamiast…
mysite.com/suche/term
I drugi bit… po kliknięciu na stronę 2 paginacji url wygląda obecnie tak…
mysite.com/page/2/?s=term
Chciałbym mieć niemieckie słowo, niemieckie słowo seite
(dla „strony”) zamiast tego. Może nawet tak…
mysite.com/suche/term/seite/2
Czy jest to w jakiś sposób możliwe dzięki tej funkcji dostarczonej przez @Chip? Wydaje mi się, że nie mogę znaleźć działającego rozwiązania tego problemu.
Z góry dziękuję. Naprawdę byłbym wdzięczny za pomoc.
AKTUALIZACJA
function oenology_get_paginate_archive_page_links( $type="plain", $endsize = 1, $midsize = 1 ) {
global $wp_query, $wp_rewrite;
$wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1;
// Sanitize input argument values
if ( ! in_array( $type, array( 'plain', 'list', 'array' ) ) ) $type="plain";
$endsize = (int) $endsize;
$midsize = (int) $midsize;
// Setup argument array for paginate_links()
$pagination = array(
'base' => @add_query_arg('paged','%#%'),
'format' => '?paged=%#%',
'total' => $wp_query->max_num_pages,
'current' => $current,
'show_all' => false,
'end_size' => $endsize,
'mid_size' => $midsize,
'type' => $type,
'prev_next' => false
);
if ( $wp_rewrite->using_permalinks() )
$pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg( 's', get_pagenum_link( 1 ) ) ) . 'seite/%#%/', 'paged' );
/*if ( !empty($wp_query->query_vars['s']) )
$pagination['add_args'] = array( 's' => get_query_var( 's' ) );*/
return paginate_links( $pagination );
}
/**
* Change search- & paginationbase
*/
add_action( 'generate_rewrite_rules', 'wr_generate_rewrite_rules' );
function wr_generate_rewrite_rules( $rewrite ) {
$rewrite->rules = array_merge( array(
'suche/([^/]+)(?:/seite/(\d+))?/?' => 'index.php?s=".$rewrite->preg_index(1)."&paged='.$rewrite->preg_index(2)
), $rewrite->rules );
}
add_filter( 'get_pagenum_link', 'wr_search_pagenum_link' );
function wr_search_pagenum_link( $link ) {
if ( !is_search() )
return $link;
// Attempt to parse the page number from the provided URL
if ( !preg_match( '#/page/(\d+)#', $link, $matches ) )
return $link;
// Return a re-formed URL
return home_url( '/suche/' . urlencode( get_query_var( 's' ) ) . '/seite/' . $matches[0] );
}