J'ai créé un type de message personnalisé "landing_page" pour contenir le contenu que je souhaite afficher en haut des pages d'archives des catégories.
Donc, pour chaque catégorie, j'ai une entrée landing_page étiquetée avec cette catégorie. Que dois-je ajouter au modèle archive.php de la catégorie pour qu'il affiche le contenu de la page de destination de cette catégorie (ou de son terme de taxonomie personnalisé)?
query_posts(
array( 'posts_per_page' => 1,
'post_type' => landing_page,
'category' => [[???]] ));
while (have_posts()) : the_post();
the_content();
endwhile;
?>
Je suggérerais d'ajouter quelque chose comme ceci en haut du fichier de thème ou à n'importe quel endroit où vous souhaitez que ce contenu apparaisse dans les archives, la catégorie ou autre.
// Check if it's a category or taxonomy archive
if( is_category() || is_tax() ) {
// Grab the queried data, slug, tax, etc..
$queried = $wp_query->get_queried_object();
// Check taxonomy and slug are set
if( isset( $queried->taxonomy ) && isset( $queried->slug ) ) {
// Look for a landing page post type with a slug that matches the current queried slug
$landing_page = get_posts( 'name=' . $queried->slug . '&post_type=landing_page&posts_per_page=1&nopaging=1' );
// If the result wasn't empty
if( !empty( $landing_page ) ) {
// Output the title and content using the same filters WP uses in the loop
echo apply_filters( 'the_title', get_the_title( $landing_page->ID ) );
echo apply_filters( 'the_content', get_the_content( $landing_page->ID ) );
}
}
}
Cela devrait faire ce que vous voulez sans interrompre la requête de catégorie principale pour l’archive.
J'espère que cela pourra aider.
Vous pouvez obtenir la catégorie actuelle avec
et puisque vous utilisez archive.php et non category.php, vérifiez s’il s’agit d’une catégorie en premier, si quelque chose comme ceci:
if (is_category()){
query_posts(
array( 'posts_per_page' => 1,
'post_type' => 'landing_page',
'category' => get_query_var('cat'));
while (have_posts()) : the_post();
the_content();
endwhile;
}