Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
Coupe WPB
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

Comment ajouter des articles épinglés dans les archives de type de publication personnalisé de WordPress

Note éditoriale : Nous percevons une commission sur les liens des partenaires sur WPBeginner. Les commissions n'affectent pas les opinions ou les évaluations de nos rédacteurs. En savoir plus sur Processus éditorial.

Vous souhaitez ajouter des publications épinglées aux pages d’archives de type publication personnalisée ?

En plaçant vos publications personnalisées les plus importantes en haut de la page, vous aiderez vos clients/clientes à les trouver plus facilement. Mais par défaut, WordPress rend la fonctionnalité non épinglée disponible pour les publications mais pas pour les autres types de publication.

Dans cet article, nous allons voir comment ajouter des articles épinglés dans les archives de type de publication personnalisé de WordPress.

How to Add Sticky Posts in WordPress Custom Post Type Archives

Pourquoi épingler les publications personnalisées de WordPress ?

Si vous créez du contenu pour votre site WordPress avec un format différent d’un article ou d’une page standard, alors vous utilisez probablement déjà un type de publication personnalisé. Par exemple, si vous gérez un site de critiques de livres, vous avez peut-être créé un type de publication Critiques de livres.

Vous pouvez placer votre contenu le plus important en haut de l’archive du type de publication personnalisé. C’est l’une des meilleures façons de mettre en avant du contenu approfondi et sensible au temps, ainsi que vos publications personnalisées les plus populaires.

Mais si WordPress propose une fonctionnalité de publication épinglée, celle-ci n’est pas disponible pour les types de publication personnalisés.

Voyons comment ajouter une fonctionnalité épinglée à vos pages d’archives de type de publication personnalisé.

Ajout de publicités épinglées dans les types de publication personnalisés

Tout d’abord, vous devrez installer et activer l’extension Sticky Posts – Switch. Pour plus de détails, consultez notre guide étape par étape sur l’installation d’une extension WordPress.

Lors de l’activation, vous devez vous rendre sur la page Réglages  » Sticky Posts – Switch pour configurer le plugin. Il suffit de cocher la case à côté des types de publication personnalisés que vous souhaitez pouvoir rendre épinglés.

Pour ce tutoriel, nous allons vérifier le type de publication « Avis sur les livres ».

Visit the Settings » Sticky Posts - Switch Page to Configure the Plugin

Ensuite, vous devez cliquer sur le bouton « Enregistrer les modifications » en bas de l’écran.

Maintenant, lorsque vous visitez la page d’administration pour ce type de publication personnalisé, vous remarquerez une nouvelle colonne où vous pouvez rendre les publications épinglées. Il vous suffit de cliquer sur l’étoile située à côté des publications que vous souhaitez mettre en avant.

Click the Star Next to the Posts You Wish to Make Sticky

Vous avez maintenant rendu la publication épinglée. Le problème est que WordPress affiche uniquement les publications épinglées sur la page d’accueil. Dans la publication suivante, nous verrons comment afficher les publications épinglées sur les pages d’archives.

Affichage des publications épinglées dans les archives de type de publication personnalisé

Pour afficher vos articles épinglés en haut de votre page d’archives d’articles personnalisés, vous devez créer un nouveau modèle.

Pour ce faire, vous devrez utiliser un client FTP ou la faculté de gestion de fichiers dans le panneau de contrôle de votre hébergeur WordPress. Si vous n’avez jamais utilisé le protocole FTP, vous pouvez consulter notre guide sur l’utilisation du protocole FTP pour téléverser des fichiers sur WordPress.

Vous devez accéder à votre site à l’aide de votre client FTP ou de votre gestionnaire de fichiers, puis vous rendre dans le dossier /wp-content/themes/YOURTHEME/.

Par exemple, si vous utilisez le thème Twenty Twenty-One, vous devez naviguer vers /wp-content/themes/twentytwentyone/.

Ensuite, vous devez créer un nouveau fichier dans ce dossier avec un nom comme archive-POSTTYPE.php.

Par exemple, si le slug de votre type de publication personnalisé est « bookreviews », vous devez créer un nouveau fichier appelé archive-bookreviews.php.

Visit Your Theme Folder Using an FTP Client

Ensuite, vous devez trouver le fichier archive.php dans le même dossier. Copiez simplement le contenu de archive.php et collez-le dans le nouveau fichier que vous avez créé.

L’étape suivante nécessite l’ajout de code dans les fichiers de votre thème. Si vous avez besoin d’aide pour ajouter du code à votre site, alors consultez notre guide sur la façon d’ajouter du code personnalisé dans WordPress.

Lorsque vous êtes prêt, vous devez ajouter le code suivant au fichier functions.php de votre thème ou à une extension d’extraits de code comme WPCode (recommandé) :

function wpb_cpt_sticky_at_top( $posts ) {
  
    // apply it on the archives only
    if ( is_main_query() && is_post_type_archive() ) {
        global $wp_query;
  
        $sticky_posts = get_option( 'sticky_posts' );
        $num_posts = count( $posts );
        $sticky_offset = 0;
  
        // Find the sticky posts
        for ($i = 0; $i < $num_posts; $i++) {
  
            // Put sticky posts at the top of the posts array
            if ( in_array( $posts[$i]->ID, $sticky_posts ) ) {
                $sticky_post = $posts[$i];
  
                // Remove sticky from current position
                array_splice( $posts, $i, 1 );
  
                // Move to front, after other stickies
                array_splice( $posts, $sticky_offset, 0, array($sticky_post) );
                $sticky_offset++;
  
                // Remove post from sticky posts array
                $offset = array_search($sticky_post->ID, $sticky_posts);
                unset( $sticky_posts[$offset] );
            }
        }
  
        // Look for more sticky posts if needed
        if ( !empty( $sticky_posts) ) {
  
            $stickies = get_posts( array(
                'post__in' => $sticky_posts,
                'post_type' => $wp_query->query_vars['post_type'],
                'post_status' => 'publish',
                'nopaging' => true
            ) );
  
            foreach ( $stickies as $sticky_post ) {
                array_splice( $posts, $sticky_offset, 0, array( $sticky_post ) );
                $sticky_offset++;
            }
        }
  
    }
  
    return $posts;
}
  
add_filter( 'the_posts', 'wpb_cpt_sticky_at_top' );
 
// Add sticky class in article title to style sticky posts differently
 
function cpt_sticky_class($classes) {
            if ( is_sticky() ) : 
            $classes[] = 'sticky';
            return $classes;
        endif; 
        return $classes;
                }
    add_filter('post_class', 'cpt_sticky_class');

Ce code place les publications épinglées en haut de la page. Si votre thème utilise la fonction post_class(), il ajoute également une classe « épinglé » afin que vous puissiez styliser vos publications collantes à l’aide de CSS.

Voici à quoi ressemble l’archive du type de publication personnalisé Avis de livres sur notre site de démonstration. Avant l’ajout du code, la publication épinglée était en deuxième position sur la liste.

Preview of Sticky Post on Custom Post Type Archive

Vous pouvez maintenant styliser vos publications épinglées en utilisant la classe .sticky dans la feuille de style style.css de votre thème. Voici un exemple :

.sticky { 
background-color:#ededed;
background-image:url('http://example.com/wp-content/uploads/featured.png');
background-repeat:no-repeat;
background-position:right top;
}

Voici une capture d’écran actualisée de notre site de démonstration.

Preview of CSS Styling of Sticky Post

Guides d’experts sur les publications épinglées

Maintenant que vous savez comment ajouter des publications épinglées aux archives de type de publication personnalisé, vous aimerez peut-être consulter d’autres guides liés aux publications épinglées dans WordPress.

Nous espérons que ce tutoriel vous a aidé à apprendre comment ajouter des articles épinglés dans les archives de type de publication personnalisé de WordPress. Vous pouvez également consulter notre guide sur la façon d’accélérer votre site WordPress ou nos choix d’experts pour les meilleures extensions d’enquêtes WordPress.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

Divulgation : Notre contenu est soutenu par les lecteurs. Cela signifie que si vous cliquez sur certains de nos liens, nous pouvons gagner une commission. Consultez comment WPBeginner est financé, pourquoi cela compte et comment vous pouvez nous soutenir. Voici notre processus éditorial.

Avatar

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

L'ultime WordPress Toolkit

Accédez GRATUITEMENT à notre boîte à outils - une collection de produits et de ressources liés à WordPress que tous les professionnels devraient avoir !

Reader Interactions

14 commentairesLaisser une réponse

  1. Syed Balkhi says

    Hey WPBeginner readers,
    Did you know you can win exciting prizes by commenting on WPBeginner?
    Every month, our top blog commenters will win HUGE rewards, including premium WordPress plugin licenses and cash prizes.
    You can get more details about the contest from here.
    Start sharing your thoughts below to stand a chance to win!

  2. Clare says

    I got a custom post type to be « sticky » in an archive in 15 minutes following your example. Super helpful, thank you!

  3. rom says

    Hi,

    I’m banging my head right now….
    I’m using this plugin, it works fine, I can see it in the admin, and on the data base, I can see it update the sticky_posts in wp_options. But, when I try to use ‘post__not_in’ => get_option(‘sticky_posts’), it doesn’t filter any thing.
    So I try to var_dump(get_option(‘sticky_posts’)), and all I get is the id of the ‘normal post’, not the full list of id who I can see are in the wp_options/sticky_posts.

    Which mean if I try to use is_stiky in my loop, it only work in ‘normal’ post, not in CPT, which is logic, since get_option(‘sticky_posts’) is not working properly…. Any idea how I can fix that ? it’s driving me crazy :D

  4. Pat Ducat says

    This works good however it makes it sticky on every page of a paginated archive. Is this how the built-in sticky functionality for standard posts work too?

  5. Aaron says

    How could i set this up to work with a custom taxonomy archive page?
    I’ve tried adding ‘is_tax’ and ‘is_category’ instead of the is_post_type_archive() on line 4 of your function but it just breaks the page.

    I’m missing something obviously but can’t seem to find it.
    Any ideas?

  6. Daniel Dropik says

    Thanks. Is it possible to adapt this tutorial to display sticky posts onto a specialized page template, rather than on the archives page? If so how might I accomplish this?

    • WPBeginner Support says

      if the custom taxonomy is displaying post types with sticky posts support, then you can display it in the same manner. Instead of archive-post-type.php template, make changes in taxonomy-custom-taxonomy.php template.

      Administrateur

  7. Mr.Ultra says

    Thanks. This is useful.
    But if it’s possible not using a plugin to add sticky functionality to custom post types?
    Can you share the snippet?

Laisser une réponse

Merci d'avoir choisi de laisser un commentaire. Veuillez garder à l'esprit que tous les commentaires sont modérés selon notre politique de commentaires, et votre adresse e-mail ne sera PAS publiée. Veuillez NE PAS utiliser de mots-clés dans le champ du nom. Ayons une conversation personnelle et significative.