web-dev-qa-db-fra.com

Passer et récupérer des vars de requête dans wordpress

J'ai deux pages d'auteurs, une affiche environ 5 messages. Ensuite, j'essaie de configurer une autre page qui contiendra tous leurs messages. J'ai créé un modèle appelé moreauthorposts.php et j'essaie de transmettre la variable auteur à cette page. Le problème est que si je passe domain.com/more-author-posts?author=johndoe, il est vidé. Comment puis-je récupérer cette valeur? Est-ce même possible dans wordpress? Je sais que WP Rewrite modifie ma structure d'URL d'une manière ou d'une autre.

J'ai essayé:

get_query_var('author')

et essayé de lire ceci mais sans aucune chance:

http://codex.wordpress.org/Query_Overview

Suggestions?

Merci.

15
codeisforeva

Je suis presque sûr que author est intégré, utilisez donc quelque chose comme author_more. Vous devrez d'abord ajouter cette variable à query_vars. Exemple:

// add `author_more` to query vars
add_filter( 'init', 'add_author_more_query_var' );
function add_author_more_query_var()
{
    global $wp;
    $wp->add_query_var( 'author_more' );
}

Ensuite, sur votre modèle more-author-posts.php, appelez-le comme ceci:

if ( get_query_var( 'author_more' ) )
{
    // do your stuff
}

Mettre à jour

Cela fonctionne dans l'exemple d'URl/cas d'utilisation suivant:

http://example.com/index.php?author_more=value

Mais si vous voulez utiliser ceci comme une URL sophistiquée, vous devez ajouter une règle de réécriture:

add_action('init','add_author_more_rewrite_rule');
function add_author_more_rewrite_rule()
{
    add_rewrite_rule(
        'more-author-posts/(\d*)$',
        'index.php?author_more=$matches[1]',
        'top'
    );
}

Maintenant, vous pouvez l'utiliser comme ça

http://example.com/more-author-posts/value
20
Bainternet