Je ne parviens pas à apprendre comment écrire cette URL dans un modèle d'expression régulière à ajouter en tant que réécriture. J'ai essayé plusieurs sandboxes regex pour le résoudre moi-même, mais ils ne permettent pas de '/', par exemple, lorsque je copie une expression à partir d'ici pour la tester:
J'ai un type de publication personnalisé (publications) avec 2 taxonomies (magazine, numéro) pour lequel j'essaie de créer une URL de bonne qualité.
Donc, après de nombreuses heures, je suis venu ici pour savoir comment je peux convertir cette
index.php?post_type=publications&magazine=test-mag&issue=2016-aug
à une expression regex basée sur un modèle ( publication , magazine et issue sont constants) pouvant produire
http://example.com/test-mag/2016-aug/
et, espérons-le, avec de la place pour s’étendre si un article est suivi depuis cette page.
Merci d'avance.
À partir des documentations wordpress - https://codex.wordpress.org/Using_Permalinks
Utilisation de% category% avec plusieurs catégories sur un message
Lorsque vous attribuez plusieurs catégories à une publication, une seule peut apparaître dans le lien permanent. Les catégories sont classées par ordre alphabétique. Dans chaque groupe de sous-catégories, l'ordre sera également alphabétique. (voir Gérer les catégories). Le poste sera toujours accessible dans toutes les catégories, comme d’habitude.
Vous pouvez cependant atteindre ce que vous voulez en créant une page avec le slug listpublications
et en ajoutant le code suivant:
add_action('init', 'rewrite');
add_filter('query_vars', 'query_vars');
function rewrite(){
add_rewrite_rule('listpublications/([^/]+)/([^/]+)/?$', 'index.php?pagename=listpublications&magazine=$matches[1]&issue=$matches[2]','top');
}
function query_vars($query_vars) {
$query_vars[] = 'magazine';
$query_vars[] = 'issue';
return $query_vars;
}
Maintenant, allez dans paramètres -> permaliens et cliquez sur enregistrer. Cela va ajouter les nouvelles règles de réécriture, donc ceci est très important .
Créez maintenant un fichier de modèle dans votre dossier de thème nommé page-listpublications.php
et ajoutez le code suivant entre le pied de page et l'en-tête.
global $wp_query;
$query_args = array(
// show all posts matching this query
'posts_per_page' => -1,
// show the 'publications' custom post type
'post_type' => 'publications',
// query for you custom taxonomy stuff
'taq_query' => array(
array(
'taxonomy' => 'magazine',
'field' => 'slug',
'terms' => $wp_query->query_vars['magazine']
),
array(
'taxonomy' => 'issue',
'field' => 'slug',
'terms' => $wp_query->query_vars['issue']
)
)
);
//fetch results from DB
$query = new WP_Query( $query_args );
if ($query->have_posts()): while ($query->have_posts()): $query->the_post();
// do something sweet with the results
the_content();
Le www.yourdomain.com/listpublications/test-mag/2016-aug
en visite devrait vous donner toutes les publications dans le magazine test et dans le numéro 2016-août.
J'espère que cela t'aides :)