web-dev-qa-db-ja.com

パーマリンク、書き換え、変数の取得、Oh My!

わかりました、それで私はそれが愚かなタイトルであることを知っています、しかしそれはまさに私が今感じる方法です..

私はWordPressのためにいくつかのカスタムリライトを作成しました、そして、それらは素晴らしい働きをします、唯一の問題は今私が改ページを加える必要があるということです。私のルールはページネーションをめちゃくちゃにしています。ページ付けリンクをクリックするとページのURLが更新されますが、クエリは変わりません。

これが私の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');

これが私の改ページコードです。

<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>

これが、グループ変数と値変数を取得する方法です。

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

私はこれを私のWP_Queryで使っています

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

改ページを許可するようにルールを書き直すにはどうすればよいですか。私が間違っていることはありますか?

2
Austin Biggs

よくわかりませんが、2つの書き換えタグではなく、2つのクエリ変数 "group"と "value"を追加するだけでよいと思います。あなたはこれを試すことができます:

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' );
}

それから、これはページ付けのために働くべきです:

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

そしてこれで "group"と "value"の値を得ることができます。

$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