wake-up-neo.net

Permalinks, Rewrites, Get Variablen, Oh My!

Ok, ich weiß, dass es ein alberner Titel ist, aber genau so fühle ich mich gerade.

Ich habe einige benutzerdefinierte Umschreibungen für WordPress erstellt und sie funktionieren hervorragend. Das einzige Problem ist, dass ich jetzt die Paginierung hinzufügen muss. Meine Regeln spielen mit der Paginierung und umgekehrt. Die Seiten-URL wird aktualisiert, wenn ich auf einen Paginierungslink klicke, aber die Abfrage bleibt gleich.

Folgendes habe ich in meiner functions.php

// ADD REWRITE FOR VIDEOS -> GROUP
add_rewrite_tag('%group%','([^&]+)');

// ADD REWRITE FOR VIDEOS -> VALUE
add_rewrite_tag('%value%','([^&]+)');

// ADD REWRITE FOR VIDEOS TO ACCEPT GROUP & VALUE
add_rewrite_rule('^car-videos/group/([^/]*)/value/([^/]*)/?','index.php?page_id=40&group=$matches[1]&value=$matches[2]','top');

Hier ist mein Paginierungscode

<div class="pagination">
                            <?php $total_pages = $loop->max_num_pages;  

                                    if ($total_pages > 1){  
                                    $current_page = max(1, get_query_var('paged'));  

                                    echo paginate_links(array(  
                                            'base' => get_pagenum_link(1) . '%_%',  
                                            'format' => 'page/%#%',  
                                            'current' => $current_page,  
                                            'total' => $total_pages, 
                                            'prev_text'    => __('Previous'),
                                            'next_text'    => __('Next')
                                        ));  
                                    }   
                            ?>
                        </div>

Hier ist, wie ich die Gruppen- und Wertvariablen erhalte

$urlGroup = $wp_query->query_vars['group'];
$urlValue = $wp_query->query_vars['value'];

Ich benutze dies in meiner WP_Query

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

Wie würde ich die Regel umschreiben, um Paginierung zuzulassen? Gibt es etwas, was ich falsch mache?

2
Austin Biggs

Ich bin nicht sicher, aber ich denke, dass Sie nur zwei Abfragevariablen, "group" und "value", hinzufügen müssen, nicht zwei Umschreibetags. Kannst du das versuchen:

add_filter('query_vars', 'cyb_add_query_vars');
function cyb_add_query_vars( $vars) {
    $vars[] = "group"; // name of the var as seen in the query string and URL
    $vars[] = "value";
    return $vars;
}
add_action('init','cyb_add_rewrite_rules');
function cyb_add_rewrite_rules() {
    add_rewrite_rule( '^car-videos/group/([^/]*)/value/([^/]*)/?$','index.php?page_id=40&group=$matches[1]&value=$matches[2]','top');
    //Rule for pagination
    add_rewrite_rule( '^car-videos/group/([^/]*)/value/([^/]*)/page/([0-9]{1,})/?$', 'index.php?page_id=40&group=$matches[1]&value=$matches[2]&paged=$matches[3]', 'top' );
}

Dann sollte dies für die Paginierung funktionieren:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

Und Sie können die Werte von "group" und "value" folgendermaßen abrufen:

$group = get_query_var('group');
$value = get_query_var('value');
//OR
global $wp_query;
$group = $wp_query->get( 'group' );
$value = $wp_query->get('value');
4
cybmeta