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


16

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

J'ai essayé:

get_query_var('author')

et a essayé de lire ceci mais n'a pas eu de chance:

http://codex.wordpress.org/Query_Overview

Suggestions?

Merci.

Réponses:


21

Je suis presque sûr que authorc'est intégré, alors utilisez quelque chose comme author_more. Vous devrez d'abord ajouter cette var 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 more-author-posts.phpmodèle, appelez-le comme ceci:

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

Mise à jour

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

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

Mais si vous souhaitez l'utiliser comme URl de fantaisie, 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'
    );
}

Vous pouvez maintenant l'utiliser comme ceci

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

Ok, j'ai donc ajouté les variables de requête dans le fichier functions.php. Ensuite, j'ai ajouté l'autre code à mes autres publications d'auteur. Quelle serait la structure URL correcte pour les transmettre? Je sais que la pagination utilise le format de / page / 2 mais faire plus de messages d'auteur / more_author / johndoe ne semble pas fonctionner?
codeisforeva

j'ai mis à jour la réponse
Bainternet

Le problème est que je n'essaie pas de passer les vars à index.php. Im essayant de les passer au modèle personnalisé que j'ai développé car il semble complètement différent de l'index. Donc, si je passe des valeurs à moreauthor.php? Author_more = johndoe .. cela ne semble pas fonctionner. Faire quelque chose de mal ici?
codeisforeva

@ בניית אתרים ressemble à une réponse très claire! @codeisforeva Vous ne devriez pas appeler directement le fichier modèle, n'est-ce pas? index.php n'est que le fichier racine de wordpress, chaque règle de réécriture devrait passer par là.
goldenapples

1
@codeisforeva: Le index.phpdans la règle de réécriture est index.phpdans le répertoire racine de WordPress, pas index.phpdans votre fichier modèle. Vous pouvez toujours choisir le modèle à afficher en vous connectant au template_includefiltre.
Jan Fabry
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.