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

Come aggiungere articoli in evidenza negli archivi di tipo di contenuto personalizzati di WordPress

Nota editoriale: guadagniamo una commissione dai link dei partner su WPBeginner. Le commissioni non influenzano le opinioni o le valutazioni dei nostri redattori. Per saperne di più su Processo editoriale.

Si desidera aggiungere post in evidenza alle pagine degli archivi di tipo di contenuto personalizzato?

Posizionare gli articoli personalizzati più importanti in alto nella pagina aiuterà i visitatori a trovarli più facilmente. Di default, però, WordPress rende disponibile la funzionalità in evidenza per gli articoli, ma non per altri post type / tipi di contenuto.

In questo articolo vedremo come aggiungere post in evidenza negli archivi dei post type personalizzati di WordPress.

How to Add Sticky Posts in WordPress Custom Post Type Archives

Perché rendere gli articoli personalizzati di WordPress in evidenza?

Se create contenuti per il vostro sito web WordPress con un formato diverso da quello di un articolo o di una pagina standard, probabilmente state già utilizzando un tipo di contenuto personalizzato. Ad esempio, se gestite un sito web di recensioni di libri, potreste aver creato un post type Book Reviews.

Si consiglia di collocare i contenuti più importanti in alto nell’archivio dei post type personalizzati. È uno dei modi migliori per caratterizzare contenuti approfonditi e sensibili al tempo, nonché gli articoli personalizzati più popolari.

Ma mentre WordPress offre una caratteristica di post in evidenza, questa non è disponibile per i post type / tipi di contenuto personalizzati.

Vediamo come aggiungere una caratteristica “sticky” alle pagine degli archivi dei post type personalizzati.

Aggiunta di articoli in evidenza in Post Type / Tipo di contenuto personalizzati

Per prima cosa, è necessario installare e attivare il plugin Sticky Posts – Switch. Per maggiori dettagli, consultate la nostra guida passo-passo su come installare un plugin di WordPress.

Al momento dell’attivazione, è necessario visitare la pagina Impostazioni ” Articoli in evidenza – Interruttore per configurare il plugin. È sufficiente selezionare la casella accanto ai post type personalizzati che si desidera rendere in evidenza.

Per questa esercitazione, controlleremo il post type “Recensioni di libri”.

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

Dopodiché, fate clic sul pulsante “Salva modifiche” nella parte inferiore dello schermo.

Ora, quando si visita la pagina di amministrazione del post type personalizzato, si noterà una nuova colonna in cui è possibile rendere gli articoli in evidenza. Tutto ciò che dovete fare è cliccare sulla stella accanto agli articoli successivi che desiderate rendere caratteristici.

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

Ora avete reso l’articolo in evidenza. Il problema è che WordPress mostra gli articoli in evidenza solo sulla pagina iniziale. Nel prossimo articolo vedremo come visualizzare gli articoli in evidenza sulle pagine degli archivi.

Visualizzazione degli articoli in evidenza negli archivi dei post type personalizzati

Per visualizzare gli articoli in evidenza in alto nella pagina dell’archivio personalizzato, è necessario creare un nuovo template.

Per farlo, dovrete utilizzare un client FTP o l’opzione di gestione dei file nel pannello di controllo del vostro hosting WordPress. Se non avete mai usato l’FTP, potete consultare la nostra guida su come usare l’FTP per l’uploader dei file su WordPress.

È necessario accedere al sito utilizzando il client FTP o il file manager e andare alla cartella /wp-content/themes/YOURTHEME/.

Ad esempio, se si utilizza il tema Twenty Twenty-One, occorre navigare in /wp-content/themes/twentytwentyone/.

Successivamente, è necessario creare un nuovo file in quella cartella con un nome come archivia-POSTTYPE.php.

Ad esempio, se lo slug del vostro post type personalizzato è “bookreviews”, dovrete creare un nuovo file chiamato archive-bookreviews.php.

Visit Your Theme Folder Using an FTP Client

Successivamente, è necessario trovare il file archive.php nella stessa cartella. È sufficiente copiare il contenuto di archive.php e incollarlo nel nuovo file creato.

Il passo successivo richiede l’aggiunta di codice ai file del tema. Se avete bisogno di aiuto per aggiungere codice al vostro sito, fate riferimento alla nostra guida su come add-on di codice personalizzato in WordPress.

Quando si è pronti, è necessario aggiungere il seguente codice al file functions.php del tema o a un plugin di snippets di codice come WPCode (consigliato):

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');

Questo codice sposta gli articoli in evidenza in alto. Se il tema utilizza la funzione post_class(), aggiunge anche una classe “sticky”, in modo che si possa dare stile agli articoli in evidenza utilizzando i CSS.

Ecco come appare l’archivio del post type personalizzato Recensioni di libri sul nostro sito demo. Prima di aggiungere il codice, l’articolo in evidenza era il secondo dell’elenco.

Preview of Sticky Post on Custom Post Type Archive

È ora possibile creare uno stile per gli articoli in evidenza utilizzando la classe .sticky nel foglio di stile style.css del tema. Ecco un esempio:

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

Ecco uno screenshot aggiornato del nostro sito web demo.

Preview of CSS Styling of Sticky Post

Guide di esperti sugli articoli in evidenza

Ora che sapete come aggiungere articoli appiccicosi agli archivi di tipo di contenuto personalizzato, potreste voler vedere altre guide relative agli articoli appiccicosi in WordPress.

Speriamo che questo tutorial vi abbia aiutato a imparare come aggiungere articoli in evidenza negli archivi di WordPress custom post type. Potreste anche voler consultare la nostra guida su come velocizzare il vostro sito web WordPress o le nostre scelte di esperti sui migliori plugin per sondaggi di WordPress.

Se questo articolo vi è piaciuto, iscrivetevi al nostro canale YouTube per le esercitazioni video su WordPress. Potete trovarci anche su Twitter e Facebook.

Divulgazione: I nostri contenuti sono sostenuti dai lettori. Ciò significa che se cliccate su alcuni dei nostri link, potremmo guadagnare una commissione. Vedi come WPBeginner è finanziato , perché è importante e come puoi sostenerci. Ecco il nostro processo editoriale .

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.

Il kit di strumenti WordPress definitivo

Ottenete l'accesso gratuito al nostro kit di strumenti - una raccolta di prodotti e risorse relative a WordPress che ogni professionista dovrebbe avere!

Reader Interactions

14 commentiLascia una risposta

  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. Markus Froehlich says

    You can use this Sticky Post Switch Plugin
    It also enables the featuere for custom post types

  5. 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?

  6. 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?

  7. 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.

      Admin

  8. 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?

Lascia una risposta

Grazie per aver scelto di lasciare un commento. Tenga presente che tutti i commenti sono moderati in base alle nostre politica dei commenti e il suo indirizzo e-mail NON sarà pubblicato. Si prega di NON utilizzare parole chiave nel campo del nome. Avremo una conversazione personale e significativa.