J'ai un modèle de catégorie qui affiche certains messages et du contenu généré par un modèle de plug-in, qui utilise the_permalink()
pour faire référence à l'URL actuelle. Le modèle de catégorie ressemble à ceci (category.php
):
<?php $categoryQuery = get_the_category(); ?>
<?php $parentCategory = get_term_by('id', $categoryQuery[0]->parent, 'category') ?>
<?php if ($parentCategory->slug !== 'teams' && $categoryQuery[0]->slug !== 'teams') {
get_template_part( 'archive', get_post_format() );
} else {
get_header(); ?>
<div class="container main-outer">
<?php set_query_var( 'categorySlug', $categoryQuery[0]->slug ); ?>
<?php set_query_var( 'categoryName', $categoryQuery[0]->name ); ?>
<?php get_template_part( 'teams-header', get_post_format() ); ?>
<?php } ?>
...
// Here goes the plugin template
...
Et le fichier teams-header.php
ressemble à ceci:
...
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$featpost = new WP_Query(array(
'category_name' => $categorySlug,
'showposts' => 5,
'paged' => $paged,
));
$newnum = 1;
$maxNumPages = $featpost->max_num_pages;
while($featpost->have_posts()) : $featpost->the_post();
...
$newnum++;
endwhile; ?>
<?php wp_reset_postdata() ?>
<div class="pagination-links">
<br />
<?php next_posts_link('« Older entries', $maxNumPages) ?>
<?php previous_posts_link('Recent entries »') ?>
</div>
Le problème est que le modèle de plug-in affiche la première URL de publication affichée sous la forme de l'URL actuelle (avec the_permalink()
), et non la catégorie un. wp_reset_postdata()
devrait réinitialiser les données de publication actuelles, mais peut-être qu'il me manque quelque chose. Une idée?
Je l'ai résolu en mettant simplement $post
à null
après le rendu des publications:
<?php $categoryQuery = get_the_category(); ?>
<?php $parentCategory = get_term_by('id', $categoryQuery[0]->parent, 'category') ?>
<?php if ($parentCategory->slug !== 'teams' && $categoryQuery[0]->slug !== 'teams') {
get_template_part( 'archive', get_post_format() );
} else {
get_header(); ?>
<div class="container main-outer">
<?php set_query_var( 'categorySlug', $categoryQuery[0]->slug ); ?>
<?php set_query_var( 'categoryName', $categoryQuery[0]->name ); ?>
<?php get_template_part( 'teams-header', get_post_format() ); ?>
<?php $post = null; // This solves the problem and the_permalink() is the category page ?>
<?php } ?>
...
// Here goes the plugin template
...
Vous pouvez obtenir l'identifiant de la catégorie et le lien permanent en utilisant get_category_link ($ Id);