web-dev-qa-db-fra.com

Comment puis-je réécrire des URL pour transmettre des valeurs de taxonomie et de type de publication à la requête?

J'ai donc un site avec environ 6 types de publication personnalisés. Trois de ces types de publication sont associés à une seule taxonomie personnalisée.

Je voudrais pouvoir list_cats dans la barre latérale et cracher une URL telle que ../%post_type%/%taxonomy%/ et que ceci vous mène à la taxonomy-% taxonomy%. php template et ne renvoie que les résultats du% post_type% .

Je peux créer un conditionnel qui lira correctement le% post_type% et le style une fois dans le fichier taxonomy-% taxonomy% .php . J'ai besoin de quelques conseils sur la méthode la plus efficace pour modifier l'URL afin de transmettre le% post_type% à la requête.

Merci d'avance. J'ai cherché pendant quelques jours sans réponse claire.

Voici donc mes faibles tentatives de solution, mais c’est un gros échec Ceci est basé sur une discussion trouvée sur rlmseo.com ant la réponse ici.

Tentative d'ajouter le type de publication à une variable à utiliser dans la requête:

practice-areas est une taxonomie. J'essaie d'ajouter une variable que je peux utiliser pour filtrer la taxonomie par type de message dans taxonomy-practice-areas.php

function add_query_vars($aVars) {
    $aVars[] = "cust_pt_var";    // represents the name of the custom post type as shown in the URL
    return $aVars;
}

// hook add_query_vars function into query_vars
add_filter('query_vars', 'add_query_vars');      

function add_rewrite_rules($aRules) {
    $aNewRules = array('practice-areas/([^/]+)/pt/([^/]+)/?$' => 'index.php?practice-areas=$matches[1]&cust_pt_var=$matches[2]');
    $aRules = $aNewRules + $aRules;
    return $aRules;
}

// hook add_rewrite_rules function into rewrite_rules_array
add_filter('rewrite_rules_array', 'add_rewrite_rules')

Essayer de passer des variables de requête dans la réécriture

Essayer d'ajouter les types d'article (portefeuille et clients) ainsi que le terme de taxonomie des domaines de pratique à la requête lors de la réécriture.

function add_rewrite_rules($aRules) {
    $aNewRules = array('portfolio/practice-areas/([^/]+)/?$' => 'index.php?post_type=portfolio&practice-areas=$matches[1]');
    $aNewRules = array('clients/practice-areas/([^/]+)/?$' => 'index.php?post_type=clients&practice-areas=$matches[1]');
    $aRules = $aNewRules + $aRules;
    return $aRules;
}

// hook add_rewrite_rules function into rewrite_rules_array
add_filter('rewrite_rules_array', 'add_rewrite_rules')
5
jroakes

Ok, j’ai jeté la réécriture ensemble et j’ai opté pour une solution $ _POST. Cela fonctionne vraiment bien et aucun slop dans mon URL. Ici practice-aires est la taxonomie et le lien extrait le fichier taxonomy-practice-areas.php fichier modèle. Sur la destination (ou ici dans le fichier de modèle), je peux modifier la chaîne $ query_string pour affiner la recherche en fonction d'un type de publication particulier. Yeeeee-ha !!

Mettre dans la page de destination:

    <?php
    $myvar = $_POST['formVar'];
    query_posts($query_string . '&post_type='.$myvar );
    ?>

Mise en page d'origine:

<!-- The Form: Put this form somewhere on the page: -->

    <form method=post name="post_form" action="">
    <input type="hidden" name="formVar" value="">
    </form>


<!-- The URL: Here I am assigning the Destination URL to a variable.  This can be whatever you want the destination page to be. -->

    <?php                       
    $dest_url = get_bloginfo('url').'/practice-areas/'. $category->slug;
    ?>


<!-- The Link: Here we are assigning 'portfolio' to  'formVar' and setting the form 'action' to the $dest_url value. The title stuff is irrelevant here-->

    <a href="" onclick="document.post_form.formVar.value='portfolio'; document.post_form.action ='<?php $dest_url; ?>'; document.post_form.submit(); return false" title ="<?php sprintf( __( "View all posts in %s" ), $category->name ); ?>" >
1
jroakes