web-dev-qa-db-fra.com

Comment afficher les messages en hyperlien avec des slugs imbriqués?

Question importante

Comment créer des limaces imbriquées comme celle-ci -
127.0.0.1/wordpress/displaypage/family1/members/
127.0.0.1/wordpress/displaypage/family2/members/

Ici - le slug displaypage est le slug de la page et family1 et family2 sont le nom des groupes que j’ai stockés dans ma table personnalisée. membres est l’onglet qui affiche le nombre d’utilisateurs dans chaque groupe. Veuillez répondre à cette question.

1
haider

Ceci peut être réalisé en en ajoutant des règles de réécriture .

Tout d'abord, ajoutez les vars de requête qui stockeront les valeurs personnalisées dans nos règles:

function wpd_family_query_var( $query_vars ) {
    $query_vars[] = 'wpd_family';
    $query_vars[] = 'wpd_members';
    return $query_vars;
}
add_filter( 'query_vars', 'wpd_family_query_var' );

Ensuite, ajoutez les règles pour capturer les deux requêtes displaypage/family/ et displaypage/family/members/:

function wpd_add_family_rewrite_rules() {
    add_rewrite_rule(
        'displaypage/([^/]+)/?$',
        'index.php?pagename=displaypage&wpd_family=$matches[1]',
        'top'
    );
    add_rewrite_rule(
        'displaypage/([^/]+)/members/?$',
        'index.php?pagename=displaypage&wpd_family=$matches[1]&wpd_members=true',
        'top'
    );
}
add_action( 'init', 'wpd_add_family_rewrite_rules' );

N'oubliez pas que vous devez vider les règles de réécriture après les avoir modifiées.

Vous pourrez alors accéder aux valeurs de vos vars de requête n'importe où après l'action parse_query avec get_query_var() :

if( $family = get_query_var( 'wpd_family' ) ){
    echo 'family: ' . $family;
}

if( $members = get_query_var( 'wpd_members' ) ){
    echo 'members: ' . $members;
}
3
Milo