web-dev-qa-db-fra.com

Réécriture de requêtes personnalisées avec une seule variable

Chaque message contient un bouton "lire" (par défaut) et "écouter" sur lequel les utilisateurs peuvent cliquer sans actualiser la page.

L’onglet Listen est accessible directement via

domain.com/category/post-title/?listen=listen

et

domain.com/category/post-title/listen/listen

Je souhaite modifier la règle de réécriture de sorte que la même page puisse être consultée

domain.com/category/post-title/listen

Comment pourrais-je m'y prendre?

Mon code:

function cp_narrations_query_vars( $qvars ) {
  $qvars[] = 'listen';
  return $qvars;
} add_filter( 'query_vars', 'cp_narrations_query_vars' , 10, 1 );

function cp_add_my_endpoint(){
    add_rewrite_endpoint( 'listen', EP_PERMALINK );
} add_action( 'init', 'cp_add_my_endpoint' );
1
Swen

Répondu grâce au commentaire de Milo.

J'ai écrit une petite fonction pour vérifier si la variable de requête existe. Notez que get_query_var('listen') n'a pas fonctionné pour moi.

function is_listen() {    
    $vars = $GLOBALS['wp_query']->query_vars;

    if ( array_key_exists('listen', $vars) ) {
        return true;
    } else {
        return false;
    }       
}

Utilisez-le dans une condition comme celle-ci:

if ( is_listen() ) {
    // Display listen tab
}
1
Swen